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

相关文章
|
1月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之upgrade_post想要不显示明文密码如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
1月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
66 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
18天前
|
关系型数据库 MySQL 数据库
mysql数据库密码
mysql数据库密码
|
1月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之录入租户管理员密码时,提示密码检验失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
1月前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
372 3
|
1月前
|
SQL 存储 关系型数据库
C# .NET面试系列十:数据库概念知识
#### 1. 为什么要一定要设置主键? 设置主键是数据库设计中的一个重要概念,有几个主要原因: 1、唯一性 ```c# 主键必须保证表中的每一行都有唯一的标识。这样可以避免数据冗余和不一致性。如果没有主键或者主键不唯一,就可能出现数据混乱或错误。 ``` 2、查询性能 ```c# 数据库系统通常会使用主键来加速数据检索。主键通常会被索引,这样可以更快速地找到特定行的数据,提高查询效率。 ``` 3、关联性 ```c# 主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 ``` 4、数据完
131 1
C# .NET面试系列十:数据库概念知识
|
1月前
|
前端开发 Java 数据库
基于Springboot的漫画网站22(程序+数据库+论文)可帮忙远程调试
基于Springboot的漫画网站22(程序+数据库+论文)可帮忙远程调试
|
1月前
|
JavaScript Java 关系型数据库
基于vue的MOBA类游戏攻略分享平台23(程序+数据库+论文)可帮忙远程调试
基于vue的MOBA类游戏攻略分享平台23(程序+数据库+论文)可帮忙远程调试