hctf2018的一道web题目:kzone。打开后是一个qq空间钓鱼网站,打开js跳转到qq zone官网。
禁用浏览器解析javascript:
搜一下目录之后发现www.zip,下载后得到源码。
审计一波后台登陆
等均为发现可以利用的点。最后决定还是从2018.php入手。
在第二行的位置引入了common.php,继续跟踪。
在commen.php中又引入了其他的文件,最终定位在member.php。
而且在member.php中并不是功能函数,那么也就是说在包含进该php文件后是会直接执行的,而且直接将传入的json数据直接带进了sql查询语句。本来到这剧情应该时一切顺利。直接开撸就可以了,但是在构造sleep盲注之后却发现没有任何反应。
无奈之下又去审计前面的代码。发现在safe.php中对传入的get,post,cookie进行了waf过滤。safe.php在member.php之前被加载,所以也被先执行。而且member.php第一行对IN_CRONLITE进行了判断,即不能直接访问member.php,只能从上层引入。
而且这个waf可以说拦截的非常严格了,盲注用到的sleep,benchmark均被过滤。然后到这就歇菜了。
最终还是看了大佬写的wiriteup:HCTF2018-WEB-详细Write up
里面提到了jsondecode可以解编码,那么我们对关键字继续宁unicode编码之后传入,这样就直接绕过waf了。
具体jsondecode解编码见前辈的文章:浅谈json参数解析对waf绕过的影响
附文中脚本:
1 | # -*- coding: utf-8 -*- |
两外也有大佬编写了tamper,直接掏出了sqlmap也是非常的方便:用sqlmap解题2018HCTF-Kzone