「学习记录」.NET程序的数据库密码解密

简介: 「学习记录」.NET程序的数据库密码解密

做项目过程中遇到的,关于简单的.NET程序的数据库解密流程过程记录,学习,阿巴阿巴


PS: MAC反编译.NET的DLL可以直接在VSCODE下载插件ILSPY,然后打开VSCODE的命令行输入>Decompile,即可选择DLL反编译。


程序一

进入正题,打开webshell管理工具,连接小伙伴给的shell,切换至根目录查看到存在文件ClientService.svc

这里面有两个重要的参数:ServiceCodeBehind

  • Service是属性值是WCF的服务实现类的完全限定名。
  • CodeBehind是服务实现类所在的文件名。

在运行的时候,宿主程序从svc文件中的Service属性得到WCF服务的完全限定名,然后从配置文件中找到同名的servicce,进而找到所有的EndPoint,并根据其属性进行实例化。

这说明此WEB服务为WCF服务,直接进入/bin下打开ClientService.svc.cs,查看到存在UserLogin接口方法的实现

可以看到会根据登陆类型的不同进入不同的处理,登陆类型为2时,进入Business.AnonymousUsers.JudgeUserLogin()方法处理;登陆类型为0时,进入Business.AnonymousUsers.UserLogin()处理,我们只关注第二个登陆类型就好。

Business.AnonymousUsers.UserLogin()XXX.ASystem.Business.dll中实现,

发现其会实例化以下结构的user,这里不必关注,然后进入GlobalParameters.PlatformUrl中的UserLogin方法

接着查看GlobalParameters.PlatformUrl

到Web.Config中查看,此配置为本地15801开启的WEB服务,

发现上面实例化user的时候调用的DLL名字就与我们开始反编译的DLL不一样了,开始的为XXX.ASystem.Business.dll,而实例化user的时候声明的类型为XXX.BSystem.SDK.dll中实现的。

在这个WEB目录同级看到以BSystem命名的目录,那就是这个WEB又会去本地的15801端口进行进一步的登陆处理(套娃?)。

进入此目录再次查看ClientService.svc文件,bin目录又没有这个ClientService.svc.cs文件了,所以就直接打开Service参数指定的XXX.BSystem.WEB.dll文件,查看UserLogin()方法,发现明显处理逻辑有点不一样

又进入了AnonymousUsers.UserLogin(),处理,虽然和上面第一层的名字一样,但这次是进入到XXX.BSystem.Business.dll中的AnonymousUsers类,继续跟过去看

我们关注的字符串password又进入了globalParameters.UserLogin(),再往上两行globalParameters是由IGlobalCache这个接口声明的,后面的AccessFactory.GetGlobalParameters()我也没找到在哪。

日了个DJ了,给爷整麻了,找不动了。

直接去IGlobalCache看发现确实有UserLogin方法,再去XXX.BSystem.Cache.dll中的GlobalCache类,发现确实是这个接口的实现,那就对了

继续查看,发现终于找到了加密处理的地方

Utility.GetMD5XXX.common.dll中实现,最终发现其会在md5处理前的数据加上一段估计字符

最后就可以指定这个盐让hashcat去跑密码了。


程序二

大体也非常简单,也是有解密数据库密码的需求,随便翻目录翻到文件AddUser.aspx

直接打开看旁边的.cs源文件,这个一目了然,直接看SecurityMgr中的CreateUser方法就行

找到对应的BizEngine.Security.dll,反编译

密码进入到Encryption.Encrypt(),然后找到对应的DLL跟过去就看到了

进行了DES,我们只需要把这个方法原模原样拿出来就行。

编写解密程序:

成功解开密码


两个案例是这两天项目中遇到的,比较简单,.NET程序看着也比较简单,漏洞也多,那么话说回来,你打上单出什么装备?

相关文章
|
2月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
112 0
|
1月前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
70 15
|
2月前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
2月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
3月前
|
SQL NoSQL 关系型数据库
数据库学习
【10月更文挑战第8天】
37 1
|
3月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
124 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
3月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
481 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
3月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
113 0

热门文章

最新文章