首当其冲|一次DM达梦数据库注入记录

admin 2026-06-18 05:57:07 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了一次对DM达梦数据库的SQL注入实战过程。作者在测试中发现不常见的达梦数据库,通过URL编码绕过符号过滤,利用if语句构造盲注payload成功获取库名。文章详细介绍了达梦数据库特性、过滤探测方法和具体注入步骤,包括使用%09、%0a替代空格等绕过技巧,但在获取表名时遇到未解决的技术障碍。 综合评分: 82 文章分类: 漏洞分析,WEB安全,渗透测试,实战经验


cover_image

首当其冲 | 一次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达梦数据库注入记录》

评论:0   参与:  0