![极限黑客攻防:CTF赛题揭秘](https://wfqqreader-1252317822.image.myqcloud.com/cover/251/47379251/b_47379251.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
题目2 截断绕过
题目概况
URL中的“%00”在ASCII码中表示0,而ASCII码中的0表示字符串的结束,所以,当URL中出现“%00”时,服务器会认为URL已经结束,不会再去检测后面的内容,而这将引发绕过验证。在0CTF比赛中就出现过这样的题目。
解题思路
如图1-3所示,这是一道简单的注入题。题目明示要靠注入找到flag,但WAF屏蔽了一些关键字。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/017-1.jpg?sign=1739282417-06eMzvKxd0cPb5Thq4RkT6uzgqFsYQAg-0-07d4685f76410660bd332cd3c88e1da7)
图1-3
如图1-4所示,检测注入点。在地址栏中输入以下内容。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/017-2.jpg?sign=1739282417-hTYwcSkrUgNF4rYgS8bbv6c5rBOEdrll-0-4dbf07bf7efe1bdd43d1bc7874298a01)
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/017-3.jpg?sign=1739282417-4uZ2fDv7NmzFGjY2Ba6rKDnfsLPffsXY-0-7d42525ca7516653dae2eac95a780613)
图1-4
可以看出,注入点就是id,但后面的参数中有一些被WAF检测出来了,所以输入的内容被拦截了。进行一轮模糊测试,得到下面的测试结果。
• 已被检测的关键字:SELECT、WHERE、FROM。
• 未被检测的关键字:UNION、LIMIT、AND、OR、LIKE,以及符号“*”“&”“#”等。
接下来,解题思路就可以简化成:使用SELECT语句且不被WAF拦截(也就是关键字绕过)。
如图1-5所示,尝试使用编码绕过、大小写绕过、内联注释、在关键字内添加无效字符等方法后,发现可以利用在关键字内添加无效字符的方法绕过“SEL%00ECT”。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/018-1.jpg?sign=1739282417-1XmWRulcJLhSgj1cld7YBrJDvE01FXLG-0-0dae63549ea96350bbbc16f553afafff)
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/018-2.jpg?sign=1739282417-ux4777CpYW8yAe2gEo27sAcxNNCyCXBm-0-dd077049acce26bf4450436ec64b49c9)
图1-5
可以看到,在关键字内添加“%00”即可成功绕过WAF的检测。继续进行注入,看看数据库中有哪些表。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/018-3.jpg?sign=1739282417-sS2QWDhh5jnpcISjJUHZCNQdPtbeABVl-0-f5b4e8e07f1812b3449364e4c562d203)
得到的表名如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/018-4.jpg?sign=1739282417-skqztWomutP8QbF4g1VWVCwx65ARVXEI-0-2311e8118b74aed5c06fea3a92426f31)
在结尾处有我们最关心的flag表。构造语句,注入flag表,如图1-6所示。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/018-5.jpg?sign=1739282417-EYYfw3KWFKVfTnRsSRDHpl9pnB4AvsRq-0-84a253c07a44a3354c346447721669c3)
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/018-6.jpg?sign=1739282417-GU9pirIebNwEmLDH5qfpmHDC5aPDek9J-0-0e6a5bb93b49c1c941ea6054c95b2808)
图1-6
如果对手工注入不太熟悉,可以使用sqlmap中的template脚本。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/019-1.jpg?sign=1739282417-XknRcfpWCPcV0CslRN7iKrEgCKCvaIYd-0-0ee6b3991076e0a1df5e09b7c0601444)
将InsertNullCharInSQLKeywords.py文件复制到sqlmap的template目录下,py文件内容如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/019-2.jpg?sign=1739282417-VLSc2rswmjWNeDu1tdMGS1VLY8BQIuRa-0-a78a1a27ddcc912f3a62d35351795835)