CTF从入门到提升(六)order_by注入及例题分享
作者: 日期:2019年08月30日 阅:4,812

​​位运算符

我们都知道常规的注入,比如id=100这种类型可以查询出一篇文章,如果把100换成99+1它一样可以查出,因为它会做计算。order_by 去判断列数的时候,如果把id=4换成3+1去执行,出来的结果并没有做计算,所以这个运算效果没有意义。

运算符如何运算呢?

位运算将每一个值转化成一个二进制字符串按位的“and”或“or”,假设2 | 3,转成字符串就是3。

ORDER BY

常规去使用order by的时候它后面会跟一个数字,通过它来判断列数,但实际上后面的参数应该是什么呢?

参数第一个位置必须是列名,可以用数字来代替,代表某一列。但是实际上后面还有还可以带一个可选参数,比如说ASC和DESC,意思是正序还是倒序升序还是降序,后面括号有个N在里头,它其实后面还可以跟好几列。

先根据ID先做排序,如果排完之后存在同面同变量的,它就会根据你设置的第二个参数进行排序了。

思考:

实际操作中如果能够控制代入ASC和 DESC,是不是也可以做一个注入呢?(大家可以思考操作试一下)

order by 与bool型盲注结合

举栗子

这是国外的某个网站上的一道题目,这道题目如果要访问地快可以使用VPN。

可以发现  这里变成了倒序:

为什么返回的顺序是7356呢?

按位或,假设它是3236,那么它的原来结果是1234。

和2去做一个“或”,结果全部计算之后再做排序。

假设正则表达式是以A字母为开头去和结果进行匹配,会发现正则表达式和它是不匹配的,返回值就是0。它的返回值就是和1进行“或”的结果。

如果换成是字母B开头,它去匹配返回结果是1,按位2“或”拿到就是2的页面。

脚本整理分享给大家:

以上内容参考安全牛课堂《CTF从入门到提升

课程地址:https://www.aqniukt.com/my/course/8954​​​​​​​​

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章