「学习记录」.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程序看着也比较简单,漏洞也多,那么话说回来,你打上单出什么装备?

相关文章
|
16天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
2月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
202 3
|
16天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
2月前
|
SQL NoSQL 关系型数据库
数据库学习
【10月更文挑战第8天】
24 1
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
70 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
108 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
34 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
2月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
2月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
2月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保