(此文章是记录本人对知识理解的随手笔记,内容不肯定百分百正确,如有错误望指出并谅解)
结论:
order by 后面加数字可以判断服务器在查询某个表时所查询的列数。
原理:
1、当sql查询语句为:
select username,password,uid from tbl_user order by 1;
就按照查询的第一个字段(即username字段)进行排序 ,此时SQL语句不会报错
2、当 order by 2 时,就按照查询的第二个字段(即password字段)进行排序 ,此时SQL语句也不会报错
3、当 order by 4 时,就按照查询的第四个字段进行排序,可是SQL语句中没有查询的第四个字段,查询的字段最多到第三个(即uid),所以SQL语句会报错
4、我们就可以根据页面有没有显示报错来判断查询的字段数有多少个。
例子:
当输入为order by 1 时,没有报异常(图为sqli-labs闯关1的页面),此时我们加大数字
当输入为 order by 2 时,还是没有报异常,此时我们继续加大数字
当输入为 order by 3 时,没有报异常,此时我们继续加大数字
当输入为 order by 4 时,网页出现报异常了,这就说明查询的字段只有三个