PHP死亡exit()绕过
本文最后更新于 38 天前,其中的信息可能已经有所发展或是发生改变。
file_put_contents($filename,”<?php exit();”.$content);

前提就是$filename和$content可控

相对简单来说就是要把<? php exit();给干掉

所以我们要利用php://filter协议可以写入文件

那么原理是什么呢?

通过伪协议把文件当作文本流、非 PHP 代码、压缩文件等其他形式解析,从而避免 PHP 正常解析 exit() 语句!

也可以这么理解,用协议的话会用过滤器进行编码,目标就是把<? php exit();解码成php不认识的字符,而我们构造的内容可以正常的解码出来

我去参考了P牛的文章

<? php exit();实际上是一个XML标签(我的理解是它符合XML中的写法),然后就可以利用strip_tags函数去除它

再解释一下strip_tags函数

strip_tags() 是 PHP 的一个函数,用来去除字符串中的 HTML 和 PHP 标签,也可以去除XML标签,其实只要是这样的<tag>就会给去除
示例:
$string = "<b>Hello</b> <i>world</i>";
echo strip_tags($string); // 输出: Hello world

echo strip_tags($string, '<b>'); // 输出: <b>Hello</b> world

刚好php://filter就是支持这个方法的

php允许使用多个过滤器,可以先将webshell用base64编码,在调用完成strip_tags后再进行base64-encode

但是注意base64编码有个问题,就是特殊符号没办法进行编码,而且base64编码是以=作为结尾的,所以正常解码到=就会解码结束,所以会导致我们过滤器解码失败,从而报错

同时也可以使用rot13编码完成

php://filter/write=string.rot13|cuc cucvasb();|/resource=shell.php
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇