从 sql 语句的控制到任意文件读取挖掘思路
1341025112991831 历史精选 563浏览 · 2025-02-11 08:20

从 sql 语句的控制到任意文件读取挖掘思路

环境搭建

下载 zzcms 的源码

https://www.zzcms.net/

然后 phpstduy 一把搭建就 ok

搭建成功如下

图片加载失败


然后记得创建数据库然后导入给的 sql 文件就好了

漏洞点寻找

这里我使用的是 Seay 源代码审计系统

主要直接匹配 sink 点,方便我们审计

图片加载失败


虽然误报非常非常多,因为它是基于 sink 点的正则匹配

然后看到任意文件读取的地方

我们来到代码

图片加载失败


然后我们现在需要做的就是$fp 参数是否可以控制,而且可以看到前面是加了

所以如果需要实现任意文件的读取的话我们还需要完成目录穿越

我们现在像上寻找

图片加载失败


太多了我去

但是也很好解决,因为仔细看了有很明显的

图片加载失败


可以看到的是我们需要参数可以控制,所以很容易排除了那些固定参数

这里找到 one/siteinfo.php 文件

图片加载失败


然后我们还是需要追踪

首先

我们的 $skin 肯定不能为空,而它的值是取决于 row

其实从这里就能看出来了

这个 row 其实是我们 sql 查询出来的数据集,而从其中取出来的是我们的 skin

我们一路溯源

那么我们需要

这里查出来的数据我们是可以控制的

我们先去 mysql 看看

图片加载失败


其实这里我思考的是有没有能够控制其他字段的,这里我们需要控制 id,然后 id 能够决定我们带出来的数据,所以问题就是有什么地方能够实现控制 id,控制我们的 skin

然后我就去寻找 sql 语句了

首先需要有字段 skin

图片加载失败


然后找了一下,发现相关的 sql 语句就只有两个

分别看看

图片加载失败


不行表不一样

图片加载失败


还是那个问题

打破思路

然后卡了半天,准备放弃了,然后过了几天再去看的时候发现,两次不能成功都是因为表不一样,那么我尝试全局搜索这个表,看看有没有一样的

图片加载失败


不多,一个一个看

图片加载失败


还真找到了,但是为什么刚刚全局搜索没有搜索到??

然后观察参数是否可以控制

图片加载失败


刚好可以控制,所以我们的思路就来了

第一尝试去传入我们的数据,然后更新到 sql 语句中

漏洞利用

首先访问我们的文件

图片加载失败


但是没有东西,不管了,先产传入参数再说

图片加载失败


成功走到了这里

sql 语句如下

然后直接放入数据库查询了

没有对我们的..过滤

图片加载失败


然后我们查看我们的数据库

图片加载失败


数据果然被改了

然后就是提取出我们的数据

图片加载失败


成功的把我们的数据查了出来

图片加载失败


图片加载失败
成功读取到了内容

图片加载失败


成功实现了任意文件读取

0 条评论
某人
表情
可输入 255

没有评论