Sqli-Labs是用来练习sql注入的好平台。project地址:https://github.com/Audi-1/sqli-labs
本文测试环境:使用phpstudy集成环境。mysql版本:5.5.53
基础知识
利用sql注入可以导入导出文件,获取文件内容,或向文件写入内容。
load_file()
用于读取本地文件内容。有几个条件限制:
- 需要有读取文件的权限
- 需要知道文件的绝对物理路径。
假设C盘里有一个TEST.txt文件,内容为chybeta。几种读取方式如下:
直接使用绝对路径
注意对路径中斜杠的处理。
- mysql> select load_file(“C://TEST.txt”);
- mysql> select load_file(“C:/TEST.txt”);
- mysql> select load_file(“C:\TEST.txt”);
以上返回结果如下:
但若输入以下查询则会返回空即不成功。
mysql> select load_file(“C:\TEST.txt”);
使用编码
ASCII
以C:\\TEST.txt
为例。对其进行ascii编码后利用char()进行查询:
返回结果:
十六进制
以C:\\TEST.txt
为例。对其进行十六进制编码后进行查询:
返回结果:
select
可以用来导出文件/数据到文件中。语法如下:
或者
file_name处一般要指定绝对路径,否则就会导出到mysql的目录下。同时对需导出的目录有可写权限。对file_name,可以有以下几种编码方式,注意对路径分隔符的处理:
数据导出
|
|
|
|
这里是假设写入到文件1中。在实际测试中,要outfile出的文件不能已经存在,否则会报错。
写入webshell
outfile还可以用来写入webshell。前提是:
- 需要知道网站的绝对物理路径,这样导出后的webshell可访问
- 对需导出的目录有可写权限。
|
|
Lees 7
payload: