Level 1 显错注入 mysql
and 1=2时返回正常,说明不是数字类型注入,且‘1’=‘2’返回错误
从此可以判断其为字符型注入
可以看出其对#号过滤(其实是要用%23,因为#在url里面是注释的原因)
对--+无过滤
报错型注入
经过判断,3回显正常,4不正常。所以有3列
寻找回显位置,2,3为显示位
使用union联合查询的前提是必须要有显示位,union可合并两个或多个select语句的结果集,前提是两个select必有相同列(故此需要order by)、且各列的数据类型也相同。当 id 的数据在数据库中不存在时,(此时我们可以 id=-1,两个 sql 语句进行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的 union 的数据。这里还要注意一点的就是如果我们让union之前的id=1,这时候会显示id=1的信息并不会回显union之后的select信息,但是如果我们是id=-1此时不会显示id=1的信息而会显示union之后的信息。
在显错位输入查询信息,版本和数据库名称
通过@@version>1没有报错可以判断其为mysql的数据库
group_concat() 函数可以将括号内的东西全部一起显示
知道数据库名为security后可以爆表名
payload:
id=1' and '1' ='2' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
可以看到该库下有以上的表,查看user表的字段
payload:
id=1' and '1' ='2' union select 1,2,group_concat(column_name) from information_schema. columns where table_name='users'--+
此时知道列名,即可爆出数据
payload:
?id=1' and '1' ='2' union select 1,2,group_concat(username,0x7e,password) from security.users--+
本文作者:硝基苯
本文链接:https://www.c6sec.com/index.php/archives/45/
最后修改时间:2021-05-19 21:37:46
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!