首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF从入门到提升(六)order_by注入及例题分享

CTF从入门到提升(六)order_by注入及例题分享

原创
作者头像
牛油果
修改2019-08-28 15:49:04
7310
修改2019-08-28 15:49:04
举报

order_by和常规注入有何区别呢?

​​位运算符

我们都知道常规的注入,比如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型盲注结合

举栗子

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

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

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

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

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

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

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

脚本整理分享给大家:

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档