位运算符
![ce522ca13842e59b85ddad6c246d517e.png](https://i-blog.csdnimg.cn/blog_migrate/5b5585300aaad619a300241f9e7115e9.jpeg)
我们都知道常规的注入,比如id=100这种类型可以查询出一篇文章,如果把100换成99+1它一样可以查出,因为它会做计算。order_by 去判断列数的时候,如果把id=4换成3+1去执行,出来的结果并没有做计算,所以这个运算效果没有意义。
![188829d98a01fb49e3ca53892e3530fd.png](https://i-blog.csdnimg.cn/blog_migrate/ac29424f22530e93bb94e49d59edd071.png)
![5fe57a9f51cbafb7c5afa0d97d1e71ba.png](https://i-blog.csdnimg.cn/blog_migrate/c154382899627b8872ea03fcbf90ad9b.jpeg)
运算符如何运算呢?
位运算是将每一个值转化成一个二进制字符串。按位的“and”或“or”,假设2 | 3,转成字符串就是3。
![9308aa14b24f2d19817ac132ee5acc94.png](https://i-blog.csdnimg.cn/blog_migrate/47040331b097615778518d1dad4b9f52.png)
![ac942c3e68a14cb3d201fc974b217d24.png](https://i-blog.csdnimg.cn/blog_migrate/45f96000120624b90bf4bc97f7b68706.png)
ORDER BY
常规去使用order by的时候它后面会跟一个数字,通过它来判断列数,但实际上后面的参数应该是什么呢?
参数第一个位置必须是列名,可以用数字来代替,代表某一列。但是实际上后面还有还可以带一个可选参数,比如说ASC和DESC,意思是正序还是倒序升序还是降序,后面括号有个N在里头,它其实后面还可以跟好几列。
![f2410cda6727957c3877cdeda9fb897b.png](https://i-blog.csdnimg.cn/blog_migrate/f5123b5127b8508095cc2f9551881c7e.jpeg)
先根据ID先做排序,如果排完之后存在同面同变量的,它就会根据你设置的第二个参数进行排序了。
![f5288f5d6b7a11c82d95d0656e25868f.png](https://i-blog.csdnimg.cn/blog_migrate/e79a7f23c8c9a4cddea1170cd1021fe3.jpeg)
思考:
实际操作中如果能够控制代入ASC和 DESC,是不是也可以做一个注入呢?(大家可以思考操作试一下)order by 与bool型盲注结合
![aa8dd66121166a73a1c97eb6ba3decad.png](https://i-blog.csdnimg.cn/blog_migrate/a80194c6930d497970c48aebf8196a4f.png)
![c25abb0288290e09dd6370c29d96657c.png](https://i-blog.csdnimg.cn/blog_migrate/ae6948085f4a74d81318a1142f2bd314.jpeg)
![3c889a4dbc7423c850b7228e607614f9.png](https://i-blog.csdnimg.cn/blog_migrate/3c5f7d7343bdd2696bcf2873a2ba1bd5.jpeg)
![914bc49fb36a25c0e72e645236312824.png](https://i-blog.csdnimg.cn/blog_migrate/cec05fdfe443853175bc6ade08495846.jpeg)
![2beec7decb7a62c53489b135bc21f2d7.png](https://i-blog.csdnimg.cn/blog_migrate/18c24c9032b3f0c604c405d2d7ce245f.png)
举例
这是国外的某个网站上的一道题目,这道题目如果要访问地快可以使用VPN。
![5bcd0862c514876f2c48327babf71011.png](https://i-blog.csdnimg.cn/blog_migrate/76439d8e4a4a625222015b8494d271d0.png)
可以发现 这里变成了倒序:
![9825d8035e1d108cfa8e70c83263a510.png](https://i-blog.csdnimg.cn/blog_migrate/6224d42e0cab0dd32d7fd8b739adbcac.png)
为什么返回的顺序是7356呢?
![345a4521493b270a63fa3feb2358dd8e.png](https://i-blog.csdnimg.cn/blog_migrate/9cf0d55c049573e059d5a828e2245a16.png)
按位或,假设它是3236,那么它的原来结果是1234。
![f38d67184a5b8d9249195b77f4f6bbff.png](https://i-blog.csdnimg.cn/blog_migrate/270a9f5de8d50e08f9fd5cb4357c8987.png)
和2去做一个“或”,结果全部计算之后再做排序。
![3c0fda19be9f44dfb105b9f03273a328.png](https://i-blog.csdnimg.cn/blog_migrate/d689bdb2fb763fea65287882b059636d.png)
假设正则表达式是以A字母为开头去和结果进行匹配,会发现正则表达式和它是不匹配的,返回值就是0。它的返回值就是和1进行“或”的结果。
![da744f658469a2e8334567afbf52adf4.png](https://i-blog.csdnimg.cn/blog_migrate/8ce79a1351ab09acbd935e31d4b9f42c.png)
如果换成是字母B开头,它去匹配返回结果是1,按位2“或”拿到就是2的页面。
![c1f908c5460ced7fddf96073e92d13a5.png](https://i-blog.csdnimg.cn/blog_migrate/a4f5b6d81b30143f15fe028201290405.png)
![2f1b07244b87c7e5b6030882535923c2.png](https://i-blog.csdnimg.cn/blog_migrate/75188f576d55de82642fc797dc89642e.jpeg)
脚本整理分享给大家
![41dbe81265360fa03d6ff5a5740e00b5.png](https://i-blog.csdnimg.cn/blog_migrate/bf70c6143bca3c93fa1aa6f23bb8d15e.png)