-
-
[原创][PHP]死亡exit绕过
-
发表于:
2022-1-25 16:18
6765
-
源码:
无论你写入什么都会被插入一句<?php exit; ?>
来强制结束掉PHP的运行
假如正常尝试写入webshell
结果为:
如果正常的插入方法则会被插入结束语句,导致无法运行
此时我们可以利用伪协议php://filter
来进行绕过
(虽然他说了7.3就废弃了,但是我7.4还是可以复现成功)
利用该过滤器可以去除文件中的PHP标签,如下所示
结果为:
成功去除了exit;
但是我们直接写入webshell,会导致也被去除掉(因为也是PHP语句吼)
此时我们可以使用base64加密的方法传入, 利用filter可以接入多个过滤器
Payload为:
在使用string.strip_tags
的同时使用convert.base64-decode
(这里要注意两个过滤器的先后顺序,因为filter索引过滤器的时候是从左到右,如果位置调换了,也会导致无法写入)
结果为:
可以看到exit
成功被去除,并且写入了我们想要写入的语句
首先我们需要知道rot13是什么
了解到rot13转换之后,我们可以get到,他只会把字母替换,而其他的数字、符号不受影响
那么我们就可以这样来想,破坏掉exit
来插入我们想要执行的语句
payload为:
<?cuc cucvasb(); ?>
为<?php phpinfo(); ?>
的rot13转换
看一下结果:
可以看到,原本的exit已经被破坏,而我们想要插入的语句插入成功。
先记录这么多,后续会接着填坑QAQ
<?php
$content
=
'<?php exit; ?>'
;
$content .
=
$_POST[
'txt'
];
file_put_contents($_POST[
'filename'
],$content);
?>
<?php
$content
=
'<?php exit; ?>'
;
$content .
=
$_POST[
'txt'
];
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!