标签:main png 去除 pop content tools 忽略 编码 com
看了p牛的文章受益匪浅,跟着p牛的思路复现一遍如何绕过exit函数。
环境:win+iis+php
1
2
3
4
5
6
7
|
<?php
$c="<?php exit;?>";
@$c.=$_POST[‘c‘];
@$filename=$_POST[‘file‘];
@file_put_contents($filename, $c);
highlight_file(‘tmp.php‘);
?>
|
可以看到在写入的文件之前存在exit;即使正确写入了shell也无法执行。这种情况一般出现在一些缓存文件中。如果能绕过这些就可以直接getshell了。
幸运的是,这里的$_POST[‘filename’]是可以控制协议的,使用php://filter流的base64-decode方法,将$content解码,利用php base64_decode函数特性去除“死亡exit”。
值得注意的有两点:
除了使用base64特性的方法外,我们还可以利用php://filter的strip_tags方法来去除“死亡exit”。
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。但是当我们直接使用strip_tags的时候。我们输入的shell的内容也会被过滤掉。
但是php://filter支持多个过滤器。
我们只需结合base64-decode即可实现getshell
标签:main png 去除 pop content tools 忽略 编码 com
原文地址:http://www.cnblogs.com/test404/p/6804829.html