简单理解延时注入 报错注入 盲注

延时注入 报错注入 盲注的原理
没啥原理,select执行语句的地方不一致
正常的话直接使用’and UNION SELECT 1,version(),3 --+’
目标执行sql语句的位置不一样,回显不一样,选择不同的函数而已
insert,updata,delete修改数据,和select *from class查询函数需要选择不用的函数注入,页面是否存在回显又要选择不同的函数注入
包括http头注入,cookie注入实际上是页面获取数据的位置不一样而已

%23

延时注入
例子
If(ascii(substr(database(),1,1))>115,0,sleep(5))
简短写法
if a>115,0,sleep(5)
三目运算法如果a>115,a就是0,否者就sleep(5)
首先需要理解函数的意思database()显示数据库名称,
substr(a,b,c)从 b 位置开始,截取字符串 a 的 c 长度。Ascii()将某个字符转换 为 ascii 值
这段语句的含义为截取database的第一个值,进行ascii编码,如果大于115,返回正常,否则延时五秒
if((length(database())=4),sleep(5),1)
如果获取的database长度为4,就延时五秒
报错注入
extractvalue(a,b,c),updataxml(),floor()三个函数,传入的参数不符合规范的话,会先执行函数内的语句,再进行报错

select extractvalue(“anything”,concat(’~’,(select语句)))
函数意思
extractvalue(a,b)

extractvalue(1,concat(0x7e,(select @@version),0x7e)) se//mysql 对 xml 数据进 行查询和修改的 xpath 函数,xpath 语法错误

select updatexml(“anything”,concat(’~’,(select语句())),“anything”)
updataxml(a,b,c)将符合b规则的a的值替换为c,如果b错误,则出现报错语句
concat()拼接成完整的字符串进行输出,符号是为了进行拼接,以便显示出来
与extractvalue(a,b)相同

floor()取整函数
select count(*),concat(database(),floor(rand(0)*2)) as x from users group by x;
floor()报错注入的原因是group by在向临时表插入数据时,由于rand()多次计算导致插入临时表时主键重复,从而报错,又因为报错前concat()中的SQL语句或函数被执行,所以该语句报错且被抛出的主键是SQL语句或函数执行后的结果
rand(0)随机数固定,floor(rand(0)*2)固定为0,1,1,

group by在执行时,会依次取出查询表中的记录并创建一个临时表,group by的对象便是该临时表的主键。如果临时表中已经存在该主键,则将值加1,如果不存在,则将该主键插入到临时表中,注意是插入!
group by与rand()使用时,如果临时表中没有该主键,则在插入前rand()会再计算一次
rand()到group by ()发现没有这个主键就再执行一次rand()

rand()到group by ()发现存在这个主键就报错输出

也就是说:floor(rand(0)*2)固定为1,1,0,插入的主键依次为name1,name1,name0,但第二个主键name1已经存在过,所以抛出错误
贴个链接
https://www.secpulse.com/archives/140616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值