[RoarCTF 2019] web题-Easy Calc

//复现地址:https://buuoj.cn/challenges

打开环境以后是一个简易计算器,从页面源代码发现了calc.php文件,该页面告诉我们有waf。
[RoarCTF 2019] web题-Easy Calc_第1张图片
calc.php是一个过滤,过滤完成后执行eval函数
[RoarCTF 2019] web题-Easy Calc_第2张图片
这里利用php字符串解析特性在变量前面加上空格
? num=phpinfo
[RoarCTF 2019] web题-Easy Calc_第3张图片了解下scandir()函数
定义:scandir() 函数返回指定目录中的文件和目录的数组。
语法:scandir(directory,sorting_order,context);

参数 描述
directory 必需。规定要扫描的目录。
sorting_order 可选。规定排列顺序。默认是 0,表示按字母升序排列。如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。
context 可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。

payload:? num=var_dump(scandir(chr(47)))
chr(47)代表的是 /

在这里插入图片描述
还需要了解file_get_contents()函数
定义:file_get_contents() 把整个文件读入一个字符串中。
用法:该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。
语法:file_get_contents(path,include_path,context,start,max_length)

参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

chr() 函数从指定的 ASCII 值返回字符
payload:? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
chr(47)=/
chr(102)=f
chr(49)=1
chr(97)=a
chr(103)=g
chr(103)=g
[RoarCTF 2019] web题-Easy Calc_第4张图片

你可能感兴趣的:(CTF练习)