骚口排序注入之:原来你不是盲注,居然是…

admin 2026-02-08 01:14:46 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了一次SQLServer数据库排序注入的实战挖掘过程。作者发现参数存在数据类型转换限制无法直接盲注,利用CASEWHEN语句构造特殊Payload,通过除法运算触发数据类型转换报错,成功实现报错注入获取数据库信息。 综合评分: 55 文章分类: 渗透测试,漏洞分析,WEB安全,软文广告


cover_image

骚口排序注入之:原来你不是盲注,居然是…

原创

犀利猪 犀利猪

犀利猪安全

2026年2月6日 16:17 湖南

免责声明

文章内容仅限授权测试学习使用勿进行非法的测试或攻击,利用本账号所发文章进行直接或间接的非法行为,均由操作者本人负全责,犀利猪安全及文章对应作者将不为此承担任何责任。

文章来自互联网或原创,如有侵权可联系我方进行删除,深感抱歉。

01

文章背景

    一个月黑风不怎么高,但是飘着毛毛细雨的夜晚,主包在加班,因为客户单位比较敏感,白天怕影响业务。此时差不多快到点了,不然就赶不上最后回家的地铁了。

02

注入出现

    是的,主包又来看插件,您猜怎么:

    这不又一眼秒了吗,排序注入。好的,让我们来深入判断一下,这是个什么数据库:

    一眼顶针,这是SQLServer数据库。为什么呢?因为length()函数,在MySQL、Oracle、PostgreSQL中都是存在的,而在SQLServer里,是len()函数:

    事情进行到这里,我本来以为可以直接通过盲的手法出货了,但是我发现我错了:

    在渐渐地测试中,我发现判断的取值部分只能是数字,不然直接报语法错误,怀疑这里有什么数据类型转换。而且,我可以确认并没有过滤函数的。

03

排序注入手法

    正如我前面所说的,这里会尝试去找列,而且取值判断的内容只能是数字,不然他直接报错列名无效:

    其实排序注入,其中一个常用手法就是要用到case when函数,让其固定返回内容,这样我们就可以指定让他返回什么列名,让其order by进行排序:

case when (1=1) then 1 else 0 end

    好的,正如我前面所说的,这里铁定有个数据类型转换,而且取值判断部分只能是数字,然后也发现了是有抛出报错信息的:

    我们大胆的进行猜测,我们在case when判断语法处构造语句,然后取值判断的内容随便给个数字:

    接下来,在后面case when要返回的两个判断结果内容中,使用列名来进行排序。

    假如这个时候,返回的结果列名是字符串类型,就有可能触发系统的强制数据类型转换,直接通过类型转换实现报错注入:

1/(case+when(left(db_name(),11111)=1)+then+列名+else+列名+end)

    至于判断的列名从哪来,首先你就是可以提取请求包或者响应包里的参数直接来用,再不行就用字典FUZZ参数。

    俺娘勒,俺~臻~牛~逼!!

文库账号

血赚价格

HOT

55.8一年,短时间内价格不变

后续只会涨,不会往下跌

登入后在文库同步获取各类资源

内含POC、各类学习报告、学习文档

(

END

)

!扫码添加哦!

联系进群即可,群内可交流技术

没钱吃饭了,大哥给点吧


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:犀利猪安全 犀利猪 犀利猪《骚口排序注入之:原来你不是盲注,居然是…》

偷偷摸摸发一个红包封面 网络安全文章

偷偷摸摸发一个红包封面

文章总结: 小王分享了一个红包封面链接,标题为好靶场,发布于2026年2月6日四川。内容仅为简单的红包封面发放,属于社交媒体日常分享性质,无技术内容或安全相关信
评论:0   参与:  0