查看页面是一个简单的计算器,猜测是有类似于eval()的函数执行运算,所以猜测rce漏洞。
但是直接;闭合添加语句无法执行,应该有过滤,然后翻看发现calc.php有过滤黑名单。
在计算页的源码也有提示,
于是查看大佬的wp/doge,使用var_dump(scandir(chr(47)))
几个姿势:
利用php字符串解析漏洞绕过num的限制,
使用scandir扫描目录,类似于ls,同时因为过滤了/,所以使用chr(47)绕过。
所以扫描目录的payload就是
http://node4.buuoj.cn:27120/calc.php?%20num=2;var_dump(scandir(chr(47)))
最后再使用
file_get_contents()读取文件,文件名同样使用chr()ascii码进行绕过。
总结:
- php字符串解析漏洞
1.删除空格(空格绕过waf)
2.将某些字符转换为下划线(包括空格)(利用特殊字符转换绕过waf)
- scandir()扫描目录
- file_get_contents()读取文件
- 利用ascii码绕过chr()