dll文件,又指库文件、动态链接库文件,与之相对的是静态库。我们知道,在编写程序经常需要导入其它库文件以使用内置接口或函数,这些接口或函数如果以静态库的方式引入,那么就先把所有需要用到的程序(包括内置接口和函数)链接在一起,再装载到内存运行。
不过在此得先能掌握一个数据库账户,假设攻击者拿到Webshell,那么他可以查看网站的配置文件(例如config.php),里面含有连接数据库的用户名和密码。
另一种方法是从…\MySQL\data\mysql\user.MYD文件中获取账户的口令密文。
winhex打开user.MYD文件:
提取其中能拼接成40位长的两段字符串,这两段字符串拼接成的40位字符串就是口令的密文,密文解密后就是明文口令。
在5.x>=MySQL>=4.1中,口令默认使用的加密方式是mysql native password,,暂时并不清楚是什么加密算法。
不同版本的MySQL对dll文件的存储位置有不同的要求:
(1)如果mysql版本>=5.1,dll文件放置在mysql安装目录的lib\plugin文件夹下。
(2)如果mysql版本<5.1, dll文件放置于c:\windows\system32目录或c:\windows目录下。
确定plugin目录位置:
如果用Webshell的权限可以直接将dll文件上传到对应的插件目录(要有对应目录的读写权限),这种情况最好,但一般Webshell的权限比较低,所以考虑可以用数据库的root账户把dll文件写入到plugin目录。当然,这也要求root要有对应目录的读写权限。
查看"secure_file_priv"文件系统权限:
系统变量secure_file_priv的可能值:
(1)NULL:无法导入或导出文件。
(2)(空):可以导入或导出文件。
(3)有具体的目录:只能从这个目录导入或把文件导出到这个目录。
dll文件本质也是一段程序,程序由指令和数据构成,不同的计算机体系结构,指令系统也不一样,因此dll文件有32位和64位的,有Windows系统和Linux系统的。
查看MySQL自己适合的系统结构(这不是操作系统的体系结构,而是MySQL适合运行在什么操作系统):
Sqlmap提供了调用shell接口的dll文件,我们可以拿来用。
不过这个dll文件被加密,需要用sqlmap提供的cloak工具解密一次:
“-d"表示解密,”-i"表示输入的文件。在输入文件的目录下生成了原生的dll文件。