【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

一,前期准备环境和工具

1,vmware 16.0安装

若已安装,请忽略

【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客文章浏览阅读186次,点赞9次,收藏2次。【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0_67844671/article/details/133609717?spm=1001.2014.3001.5502

2,win2003虚拟机的安装

若已安装,请忽略

【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_win2003server安装教程_网络安全_Aini的博客-CSDN博客文章浏览阅读183次。【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_win2003server安装教程https://blog.csdn.net/m0_67844671/article/details/133675835?spm=1001.2014.3001.5502

3,pikachu靶场安装

pikachu靶场的话我们用不到,但是讲了如何安装phpstudy2018,360zip,notepad++等工具,这些工具会用到

【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Aini的博客-CSDN博客文章浏览阅读148次,点赞11次,收藏2次。【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)https://blog.csdn.net/m0_67844671/article/details/133682360?spm=1001.2014.3001.5502

4,Burp Suite 抓包工具安装

若已安装,请忽略

【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置-CSDN博客文章浏览阅读134次。【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置https://blog.csdn.net/m0_67844671/article/details/133843910?spm=1001.2014.3001.5502

二,文件上传下载靶场安装

2-1 靶场资源下载

靶场及用到的工具百度网盘下载地址如下:

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1E2UWMOFhM9xmju51m8Lu9Q?pwd=8888
提取码:8888
现在已经准备好的环境应该如下:

win2003 系统

**phpstudy2018 -----**提供web服务

**Burp Suite抓包工具 ----**可以安装在win10虚拟机或者物理机上

**360zip,notepad++ ----------**非必需,但是win2003上没有解压缩工具和记事本

2-2 靶场安装

1,从工具文件家里把upload文件夹放到web服务器根目录上

2,启动我们的web服务器

3,查看服务器IP地址

win + r 打开命令框输入cmd回车 ,然后输入ipconfig

4,在物理机上ip地址加跟目录访问 192.168.31.159/upload

到此靶场安装完成

三,文件上传下载 1-5 关

3-1 第一关:

第一关是前端校验绕过,之前学习的时候已经学过了,可以直接修改代码绕过,或者抓包修改绕过

那就源代码绕过。鼠标右击,点击检查

不过谷歌浏览器就是有点问题,这样行不通,可以用火狐浏览器试一下

提示uploads文件夹不存在,请手工创建,所以在upload文件夹下还需要创建一个upload文件夹

创建好了文件夹以后,回到火狐浏览器继续试一下

应该是上床成功了,我们去upload文件夹下看看

确实已经上传成功了,第一关就这样过了

第二种就是抓包修改,你们还记得吗,先把webshell后缀改为png或jpg,然后上传的时候抓包,数据包中把后缀也改过来,这个就留给你们自己试一下,之前讲的时候详细讲过了的

3-2 第二关:

可以查看源码,发现它检查的是mime类型,之前也讲过了这个如何绕过,就是抓包改content-type改一下

如果直接选择php结尾的webshell的话就提示文件类型不正确

我们上传的时候抓包,该文件类型试一试 ,源代码里面已经给了白名单

上传成功了

3-3 第三关:

黑名单绕过之php3、php5

大家可以看看源代码

php 复制代码
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array('.asp','.aspx','.php','.jsp'); // 黑名单
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA,这个怎么绕过,后面会将
        $file_ext = trim($file_ext); //首尾去空
        if(!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path =
UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;            
            if (move_uploaded_file($temp_file,$img_path)) {
                 $is_upload = true;
           } else {
                $msg = '上传出错!';
           }
       } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
       }
   } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
   }
}

这里是黑名单验证('.asp','.aspx','.php','.jsp'),我们可上传php3,php5...等这样可以被服务器解析的后缀名,当然,这个是根据服务器的配置来,如果配置中可以被解析,那么我们就可以上传这样的文件,不过现在apache等默认是不支持这种文件解析了。比如下面这种

现在默认是解析不了的,除非改apache的配置文件

我们选择了一个php3的文件,结果能上传成功了

但是我们看看它能不能执行

192.168.31.159/upload/upload/202310291406466984.php3

因为apache默认不会运行php3,php5结尾的文件

让apache解析,修改httpd配置文件,如下位置

AddType application/x-httpd-php .php .phtml php3 php5

随便找个位置,然后加上上面那句话保存

重启服务器

重试以后还是一样的原因,不过这种漏洞很少见,一般服务端不会开启那个配置,而且默认是关闭的,所以即便上传成功了,也没办法以php代码执行,除非想办法改后缀

3-4 第四关:

黑名单绕过 .htaccess和文件名叠加特性绕过

分析代码发现,这里对上传的后缀名的判断增加了,php3.php5....已经不允许上传,但是没有限制.htaccess文件的上传,所以我们依然可以使用。

这是也是黑名单中的一种方法,黑名单中没有将这个后缀名的文件加入黑名单,那么我们就可以利用这种文件来进行攻击,这种文件是apache的一个配置文件,里面我们写了三行代码。可以说是,这个文件中可以改apache的配置,导致apache出现解析漏洞。

php 复制代码
<FilesMatch "">
SetHandler application/x-httpd-php
</FilesMatch>

我们只要把这个文件上传上去,然后再上传一个jpg啊之类的可上传的后缀名文件上去,那么apache都会当作php文件来解析,我这里就不上传了,比如我们在upload文件夹中放这么两个文件:

上传以后访问后的效果

3-5 第五关:

大小写混合绕过

分析代码,发现以.htaccess为后缀的文件已经不允许上传,并且上传的文件被改名字了,所以我们上面的方式都不行了,但是 file_ext = strtolower(file_ext); //转换为小写 这一句没有了,我们就可以使用文件名后缀大小写混合绕过,把1.php改为1.phP...来上传

比如选了一个tou.pHP文件就成功上传了

相关推荐
大方子7 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha9 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络9 小时前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd11 小时前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你16 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha1 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1192 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec2 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf
七牛云行业应用2 天前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云