位运算符

我们都知道常规的注入,比如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的页面。

 

脚本整理分享给大家: