上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
题目1 简单的编码绕过
题目概况
编码绕过是一类常见的SQL注入题目,在CTF比赛中经常出现。下面通过一些解题关键点分析这类题目的解题思路。
解题思路
查看源代码,发现注释中有如下内容,如图1-2所示。
因为这里使用了两个urldecode()函数,所以使用htmlspecialchars()和addslashes()函数过滤的单引号已经没有用了。此时,可以使用%252527绕过对这两个函数的过滤,然后引入单引号,输出以下报错信息。
图1-2
可以看出,这里是SQLite注入。尝试进行UNION注入,代码如下。
报错,可以肯定列数大于1。继续注入,代码如下。
由于输出为“2”,所以,可以使用sqlite_master命令得到数据库的列和表。
输出如下内容。
使用下面的语句,得到相关信息。
输出如下内容,拿到flag。
相关知识点
• urldecode()函数能将编码后的URL字符串还原成未编码的样子。编码使用“%##”格式。
• htmlspecialchars()函数能把预定义的字符转换为HTML实体。
• addslashes()函数能返回在预定义字符之前添加反斜杠的字符串。