那时候没来得及打比赛,这段时间复现一波。
一.Easy Calc
1.打开题目是一个计算器,首先随便输入几个测试一下,当输入的内容有字母的时候,会弹框 ”这啥算不来“
F12,查看一下网页源代码,有一个calc,我们去访问一下calc.php
过滤了一些东西,但是为什么输入字母就会出现“算不来”这个弹框呢,推测有waf,这个时候陷入了思考,该如何绕过呢?
2.网上搜索到了这篇文章
https://www.secjuice.com/abusing-php-query-string-parser-bypass-ids-ips-waf/
3.这边绕过的主要原理就是:
calc.php?%20num=1
当这样输入的时候,php会将%20num解析为num。
下面我们测试一下
1.php内容如下 <?php echo $_GET[a]; ?>
访问 http://127.0.0.1/1.php?a=1 返回1
访问 http://127.0.0.1/1.php?%20a=1 返回1
4.payload:
calc.php?%20num=var_dump(scandir(chr(47)))
calc.php?%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
getflag
二.Online Proxy
打开页面如下
刚开始还在那边捣鼓了半天,F12,查看源码发现。。。。。。
这边有 current IP,随手改了一下X-Forwarded-For,发现再一次访问的时候
感觉这里有点东西,这边显示了last ip,我猜测他把上一次输入的放进了数据库里面。
再次尝试一下其他的输入:
当我们再次访问index.php的时候,就会延迟5s,说明这里是可以注入的,然后直接写脚本就行了。
这里我就不把自己的脚本拿出来丢人了 QWQ,可以参考一下这边的脚本,
https://github.com/berTrAM888/RoarCTF-Writeup-some-Source-Code/blob/master/Web/online_proxy/writeup/Exp.py