我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 置数据库密码 >

如何截取程序连接数据库时的登录名和密码

归档日期:06-11       文本归类:置数据库密码      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  知道合伙人软件行家采纳数:1702获赞数:4532普实软件ERP专家向TA提问展开全部

  客户端应用程序①【Oracle客户端软件】 —— ②【系统TCP/IP模块】 —— ③【网络】—— ④【系统的TCP/IP模块】 ——⑤ 【oracle数据库】

  在②或者③处登录数据包都是已经经过加密的,但是在编写Oracle 数据库应用程序,将数据库连接的【用户名】和【密码】是用【明文】的方式传递给 Oracle 客户端驱动程序。

  ①处发生在应用程序到 Oracle 系统的调用中,也就是发生在 API 调用的层次,所以只要找到密码加密模块的入口,在对相应的 API 进行 Hook,就能截获到密码了。

  ①经过了一番跟踪以后,就可以发现用户名和密码是在 OraCore8.dll 模块中的 lncupw 函数中被加密的,而且这个函数的调用方法如下:

  函数的入口参数包括明文的数据库连接用户名和密码,以及他们的长度,运行的结果是在第一个参数Output指定的缓冲区中返回加密后的数据,以后这个加密后的数据会被发送到服务器端进行认证。

  在对 OraCore8.dll 进行补丁,在 dll 文件中附加一段代码,然后修改 dll 的导出表中 lncupw 函数对应的入口地址,将它指向到附加的代码中,然后由这段代码在堆栈中取出用户名和密码并显示出来,完成这个步骤后再跳转到原始的 lncupw 函数的入口地址去执行原有的功能。

  ①对 dll 文件的修改问题,这个问题可以归结为在 PE 文件后添加可执行代码的方法问题。

  C/找出了 dll 文件中的 PE 文件头位置,并拷贝 PE 文件头到 lpPeHead 指定的位置中。

  对 OraCore8.dll 进行了相关的补丁以后,凡是有应用程序连接 Oracle 数据库,附加代码就可以截获到连接所用的用户名和密码并通过一个 MessageBox 显示出来了。

本文链接:http://muangphet.com/zhishujukumima/67.html