「学习记录」.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月前
|
关系型数据库 MySQL 数据库
第十四章 演示MYSQL自定义values.yaml绑定PV和PVC和数据库用户密码
第十四章 演示MYSQL自定义values.yaml绑定PV和PVC和数据库用户密码
23 0
|
1月前
|
安全 网络安全 数据库
达梦数据库 忘记 SYSDBA 密码 处理方法
达梦数据库支持四种安全验证模式:数据库身份验证、基于操作系统的身份验证、外部身份验证和UKEY验证。当忘记SYSDBA密码时,可通过启用操作系统认证模式来恢复:修改`dm.ini`配置文件启用`ENABLE_LOCAL_OSAUTH = 1`,重启服务后,使用`disql / as sysdba`登录修改密码。之后,禁用操作系统认证,恢复原验证模式,确保数据库安全。
164 0
|
2月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之upgrade_post想要不显示明文密码如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
2月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
19 0
|
2月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
2月前
|
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 ('李四',
74 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
1月前
|
关系型数据库 MySQL 数据库
mysql数据库密码
mysql数据库密码
|
2月前
|
druid Java 数据库
druid+springboot加解密Druid链接池配置加密密码链接数据库
druid+springboot加解密Druid链接池配置加密密码链接数据库
81 0
|
2月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之录入租户管理员密码时,提示密码检验失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
2月前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
383 3