如何截取程序连接数据库时的登录名和密码 以Oracle为例分析:先来了解下Oracle 系统的结构。客户端应用程序①【Oracle客户端软件】—>;②【系统TCP/IP模块】—>;③【网络】—>;④【系统的TCP/IP模块】—>;⑤【oracle数据库】在②或者③处登录数据包都是已经经过加密的,但是在编写Oracle 数据库应用程序,将数据库连接的【用户名】和【密码】是用【明文】的方式传递给 Oracle 客户端驱动程序。所以,在①处数据流肯定是明文的,最有可能拦截到密码。①处发生在应用程序到 Oracle 系统的调用中,也就是发生在 API 调用的层次,所以只要找到密码加密模块的入口,在对相应的 API 进行 Hook,就能截获到密码了。具体实现方法:1.相关的调用①经过了一番跟踪以后,就可以发现用户名和密码是在 OraCore8.dll 模块中的 lncupw 函数中被加密的,而且这个函数的调用方法如下:invoke lncupw,addr Output,1eh,addrszPassword,dwLenPass,addr szUserName,dwLenName,NULL,1函数的入口参数包括明文的数据库连接用户名和密码,以及他们的长度,运行的结果是在第一个参数Output指定的缓冲区中返回加密后的数据,以后这个加密后的数据会被发送到服务器端进行认证。2.具体的实现方案在对 OraCore8.dll 进行补丁,在 dll 文件中附加。
Oracle 数据库如何跟踪SQL语句 没用,只想从后台数据库看对这个数据库执行的sql问题补充:unika_ly12
跟踪,如何在服务器上查询客户端软件在数据库的操作? 1.SQL数据库分配权限 打开SQL-Server管理工具?安全性?登陆名?右键(新建登陆名)输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改。