![极限黑客攻防: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=1739054924-Z3F9pEqjbxYOMt1XjFxvDhGn3t0T2Sn2-0-617668276516a31d0f445c50c917716a)
因为这里使用了两个urldecode()函数,所以使用htmlspecialchars()和addslashes()函数过滤的单引号已经没有用了。此时,可以使用%252527绕过对这两个函数的过滤,然后引入单引号,输出以下报错信息。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/015-3.jpg?sign=1739054924-PCRhuuk2kLTOWBTDIjbELwtyp3HXLdxB-0-1ff932b3c0d4cb97be954bd7f6b77724)
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-1.jpg?sign=1739054924-yTcCaTdWnRJc2j17tt6IBdXiQJEbw0z9-0-62bb6d75b317b6780a7aee32c2d4fc81)
图1-2
可以看出,这里是SQLite注入。尝试进行UNION注入,代码如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-2.jpg?sign=1739054924-VAfuMiXFPGp7xnZBUJkfv39ZjjSv6uop-0-d54bcedff7a98930eacd287c4562e8f4)
报错,可以肯定列数大于1。继续注入,代码如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-3.jpg?sign=1739054924-XLIykTYyM5nrdohisCoXfYkKxVAgjyf2-0-e6478ea0203d3bf8b32df35117faf836)
由于输出为“2”,所以,可以使用sqlite_master命令得到数据库的列和表。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-4.jpg?sign=1739054924-aNK48sAlJRVJoDSfzZY3FzFCO0sfABDl-0-2fe84b7dd036f709f7e2c9f09e256887)
输出如下内容。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-5.jpg?sign=1739054924-BXvdNWVUPlOnAWy2MRiFGI89MUizx7UD-0-79ac50a261e323e1b105d8c91760a47a)
使用下面的语句,得到相关信息。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-6.jpg?sign=1739054924-dYKCHqfrQfwrQn9TWZoBtmhIVN6YiT1q-0-227d6d8705c30b2ab992fc97cf648b46)
输出如下内容,拿到flag。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-7.jpg?sign=1739054924-8tG1BFrXHUsczM9EVfTUEgi3bmxQkyOx-0-bb2b3b8b2b4330793b5fc6220e8b6e90)
相关知识点
• urldecode()函数能将编码后的URL字符串还原成未编码的样子。编码使用“%##”格式。
• htmlspecialchars()函数能把预定义的字符转换为HTML实体。
• addslashes()函数能返回在预定义字符之前添加反斜杠的字符串。