IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 文件上传(由0到1) -> 正文阅读

[PHP知识库]文件上传(由0到1)

在这里插入图片描述
出自于ctfhub的一道文件上传题,话不多说,打开靶场

如图,出现一下界面,在下方由网页的源码,那么我们重点把源码分析一边
在这里插入图片描述前端html的部分我就略过了,主要看后端php的信息

在这里插入图片描述通过审计php代码发现,只允许出现zip、jpg、gif、png四种类型的代码,由于没有文件包含,所以上传图片码的方法行不通,既然是白名单,那就使用00截断吧

通过上传1.php%00.jpg文件发现,文件上传是上传进去了,但是由发现不论是返回包还是发送包,都没有最终上传的路径,再看看源码
在这里插入图片描述
其中$dir = ‘upload/’
最终我们上传的文件与upload之间加了一个随机数,导致我们不知道我们上传的路径,由于请求包中也没有路径,所以就不能用截断截掉路径,只有继续审计代码了
在这里插入图片描述

我们可以看到,我们上传还能上传zip文件,这个情况以前我还真从来没有遇见过,以前听过,但是没做过类似的题,今天长知识了

做这个题有两个问题需要解决,

  1. 解决文件路径未知的问题
    前面也说了,我们最终路径是 xxxx.com/uoload/(数字乱码)/xxx.zip ,如果我们上传的的文件名是…/…/zzz.php
    那么最终上传的路径不就是xxxx.com/zzz.php

  2. 解决后缀名的问题
    从代码中可以看见,他这里有一个漏洞,就是它使用的正则匹配是.php$,在正则匹配中$的意思是匹配末尾,所以他是从末尾开始匹配.php,那么漏洞就出现了

    这里想要绕过主要由两种思路,一个是使用00截断,1.php%00.jpg ,另一个就是通过apache解析漏洞1.php.zzz绕过,思路出来了,来看看实际操作吧

首先假设我们想要上传的文件名为…/…/1.php.zzz,我们不能直接对文件这样命名,会出现报错,所以我们可以把文件先压缩,再通过16进制编辑器对压缩包内的文件命名。

由于我们想要命名…/…/1.php.zzz有15个字符,所以我们先将一个1.php的木马文件重命名为“123456789012345”,必须也是15位,具体原因后面讲述
在这里插入图片描述
然后就可以把文件压缩拖进我们16进制编辑器了,通过编辑器,定位到我们文件名称的地方,不论什么文件都可以被16进制,而他们16进制后产生的数据都有他们自己的含义,比如下图第二个框中,就是代表着我们压缩包内文件的的名字。

在这里插入图片描述从图中我们可以看到,文件名是一个数组形式char deFileName[15],这也就是为什么我们需要按照…/…/1.php.zzz的字符数量命名的原因,在这里就解释了。

在这里我们命名为…/…/1.php.zzz就不会受限制了,接着就可以把这个文件上传上去,最终访问xxx/1.php就能访问到我们的木马文件了,flag也就出来了。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:13:11  更:2021-07-24 11:14:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 16:58:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码