![极限黑客攻防:CTF赛题揭秘](https://wfqqreader-1252317822.image.myqcloud.com/cover/251/47379251/b_47379251.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
题目1 简单的编码绕过
题目概况
编码绕过是一类常见的SQL注入题目,在CTF比赛中经常出现。下面通过一些解题关键点分析这类题目的解题思路。
解题思路
查看源代码,发现注释中有如下内容,如图1-2所示。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/015-2.jpg?sign=1739283113-YMJOdGkG6Yrm1Eh1XDZmufIx7Xty5lNa-0-47f5b194deabb5b382d81a5358c9e892)
因为这里使用了两个urldecode()函数,所以使用htmlspecialchars()和addslashes()函数过滤的单引号已经没有用了。此时,可以使用%252527绕过对这两个函数的过滤,然后引入单引号,输出以下报错信息。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/015-3.jpg?sign=1739283113-vfBdAUUZTc7gAHof7HaeIGlmqzAydUKZ-0-d148440779de1f0679095d6660cfb0da)
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-1.jpg?sign=1739283113-ErCKBvZncXQiRZbjYYGBp1kgo2AfUIRp-0-fc6e00def13a8a9345a09c57252b7144)
图1-2
可以看出,这里是SQLite注入。尝试进行UNION注入,代码如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-2.jpg?sign=1739283113-xQSbL4tHx12wmD0x8F5X7ymat0CDWkyL-0-7c8ed8cf33afb400d6f775a57cd40e00)
报错,可以肯定列数大于1。继续注入,代码如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-3.jpg?sign=1739283113-tZR4gPpHDubqYh71Juu9Zf4nanAG27oO-0-f2f24ca0c574daffe49c7141ee6f3ac3)
由于输出为“2”,所以,可以使用sqlite_master命令得到数据库的列和表。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-4.jpg?sign=1739283113-NKDduUSmwpD9gUrj8E4nKbd5ApRMK0PX-0-c2e88915b285d9b15a89036d58754074)
输出如下内容。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-5.jpg?sign=1739283113-puEs1lu7OvNZm86LeNL8rbrX3AzlO0k1-0-97793be0606c528f982e2c149234c846)
使用下面的语句,得到相关信息。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-6.jpg?sign=1739283113-dgTMoirbjtDtKdaRlzInidx4PR2Z7hkc-0-fe397a6074c43aa7a4d908e328296ec3)
输出如下内容,拿到flag。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-7.jpg?sign=1739283113-W7RNZkLSxqx4LtDirsXUUp5tf8nbtKWX-0-555bb9b4e15026352ae2a7b6d115c731)
相关知识点
• urldecode()函数能将编码后的URL字符串还原成未编码的样子。编码使用“%##”格式。
• htmlspecialchars()函数能把预定义的字符转换为HTML实体。
• addslashes()函数能返回在预定义字符之前添加反斜杠的字符串。