文章总结: 本文记录了一次对DM达梦数据库的SQL注入实战过程。作者在测试中发现不常见的达梦数据库,通过URL编码绕过符号过滤,利用if语句构造盲注payload成功获取库名。文章详细介绍了达梦数据库特性、过滤探测方法和具体注入步骤,包括使用%09、%0a替代空格等绕过技巧,但在获取表名时遇到未解决的技术障碍。 综合评分: 82 文章分类: 漏洞分析,WEB安全,渗透测试,实战经验
首当其冲 | 一次DM达梦数据库注入记录
原创
犀利猪 犀利猪
犀利猪安全
2024年4月27日 16:40 湖南
在小说阅读器读本章
去阅读
0x00 文章背景
一个临近到点下班的下午,同事测试时发现了一个注入,经过我们短暂的探测发现,过滤了不少东西,好嘛,好得很。然后我总感觉这数据库不是Mysql、Oracle之类的。于是,在报错信息中发现了一串……
经过搜索,发现这是DM达梦数据库:
我有一说一的,这玩意我第一次碰见。快下班了,于是在群里先简单问了一嘴:
后来看了下,确实跟Oracle差不多……
结果我刚在外面吃完饭回家,同事跟我说出来了:
水一篇文章记录一下,刚好了解了解。嗯,我们先来看一下DM数据库的一些特性,方便我们理解后续内容。
0x01 关于达梦
对于DM数据库,想要有一个初步且较为详细了解的话,大家可以看看这篇文章,我简单截图几张:
https://blog.51cto.com/u_15634773/6699722
0x02 过滤探测
下面三张图分别是:正常响应、SQL报错和拦截页面,有符号不让被使用时则会返回400。此时,我们先探测出什么符号不让使用,再看看这个Payload,如何去构造:
开始是直接手测了一下,没编码。然后用BP一爆破发现,URL编码就直接过了……
0x03 操作开始
查看前面达梦的相关特性,我们可以看到if语句是可以正常使用的。那我们先来构造一个if语句,先看看能不能正常使用:
接下来我们利用if来构造语句,用盲注。最后,经过测试,语句如下:
'||1/if(1=1,1,0)||'
但是,||需要做url编码,否则这里就会返回400,当if中条件成立与条件不成立时的结果分别如下图:
接下来更改一下expr,将1=1更改为语句,即可开始操作。
根据了解可得,达梦数据库获取当前库名的函数为:
select cur_database()
最后构造的语句为:
%27%7c%7c1/if(ascii(substr(cur_database(),1,1))=0,1,0)%7C%7C%27
取库名
接下来,BP跑一下,库名到手:
取表名
看了下,这玩意挺麻烦的,先在达梦在线试玩看一下语句结果:
用上述语句再试着跑一下,看看哪一条值是当前数据库名:
好嘛,语句中间有空格直接400,后续经过测试:%00、%20、%2b,这几个不会抛出400,但是会报错,说明这几个可能没被拦,但是在这用不了。
最后经过测试,可以使用%09、%0a代替空格,其他的没有尝试了。
不过这里又有个问题,直接用如下方式在这里会报错:
直接报错,不知道为什么,有了解的师傅可以指点一二:
这个没用的话,我们就只能以视图的方式来获取了……
但是这时候又拉闸了,目前没解决,有什么骚东西在搞我?好像在查询列名或者条件里有符号的时候,在这个位置就G了。
好吧,先到这了,要是解决了的话,我再接一篇后续。
我要出门看美女了!
(
END
)
!扫码添加哦!
联系进群即可,群内可交流技术
免责声明
文章内容仅限授权测试或学习使用
请勿进行非法的测试或攻击
利用本账号所发文章 进行直接或间接的非法行为 均由操作者本人负全责 犀利猪安全及文章对应作者
不为此承担任何责任
文章来自互联网或原创
如有侵权可联系我方进行删除
并诚挚的跟您说声抱歉
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:犀利猪安全 犀利猪 犀利猪《首当其冲 | 一次DM达梦数据库注入记录》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论