![极限黑客攻防: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=1739296823-gF3v3vr4fvKDThb3g8cww3NNN7OsgqWQ-0-c32b990855c52527fec73bbeff902f91)
因为这里使用了两个urldecode()函数,所以使用htmlspecialchars()和addslashes()函数过滤的单引号已经没有用了。此时,可以使用%252527绕过对这两个函数的过滤,然后引入单引号,输出以下报错信息。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/015-3.jpg?sign=1739296823-lMxukx5g0QVKExwydB0s4n464IfgsQrI-0-4e7b173301b40ac085abee84226405b8)
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-1.jpg?sign=1739296823-SfAaZjTRAVus5zG4zd9JJsqkWI9g2Ly5-0-af0a1b54235c98e22e344b85f5b4184f)
图1-2
可以看出,这里是SQLite注入。尝试进行UNION注入,代码如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-2.jpg?sign=1739296823-ZRzClrQiZzymBuNcHOEaT2myssxEPhct-0-b5192763381ef0e59a56f590846f466c)
报错,可以肯定列数大于1。继续注入,代码如下。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-3.jpg?sign=1739296823-5LKN2l7LYXrUUJFF4oZ6c32hwtv4CK3d-0-a717aef3593753bac9f5216162059b3a)
由于输出为“2”,所以,可以使用sqlite_master命令得到数据库的列和表。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-4.jpg?sign=1739296823-7ee4K4OHx6bHNwtYfa3GKsJBz9ccnegk-0-ce74651d16b38aaa58e48d8a59d4c108)
输出如下内容。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-5.jpg?sign=1739296823-TpjYj7kDU4QWQSgztvB4sOF6D9iyX13x-0-c4e2dd932f572d337c31675d20a1f7c1)
使用下面的语句,得到相关信息。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-6.jpg?sign=1739296823-01SNrr2Lidf5zh3vwlgDOfhTniUc8wRt-0-8d70243dc093a4b068e44f3316acf504)
输出如下内容,拿到flag。
![](https://epubservercos.yuewen.com/51EEC8/26763887101476206/epubprivate/OEBPS/Images/016-7.jpg?sign=1739296823-KyIL7DaryvkjIWeCcAiYmJ0tUAAN2v14-0-8b74b73e1108250fd0ebbc1725e04a0d)
相关知识点
• urldecode()函数能将编码后的URL字符串还原成未编码的样子。编码使用“%##”格式。
• htmlspecialchars()函数能把预定义的字符转换为HTML实体。
• addslashes()函数能返回在预定义字符之前添加反斜杠的字符串。