码迷,mamicode.com
首页 > 其他好文 > 详细

死亡exit

时间:2017-05-04 01:41:22      阅读:460      评论:0      收藏:0      [点我收藏+]

标签:main   png   去除   pop   content   tools   忽略   编码   com   

看了p牛的文章受益匪浅,跟着p牛的思路复现一遍如何绕过exit函数。

环境:win+iis+php

 

 

 

一、通过phpfilter协议的base64编码

技术分享

可以看到在写入的文件之前存在exit;即使正确写入了shell也无法执行。这种情况一般出现在一些缓存文件中。如果能绕过这些就可以直接getshell了。

幸运的是,这里的$_POST[‘filename’]是可以控制协议的,使用php://filter流的base64-decode方法,将$content解码,利用php base64_decode函数特性去除“死亡exit”。

值得注意的有两点:

    • . base64_decode()会忽略要解码字符串中无效字符像<>?;等,这里给出base64_decode()函数忽略无效字符相应的代码
    • “phpexit”一共7个字符,因为base64算法解码时是4个byte一组,所以给他增加1个“a”一共8个字符。这样,”phpexita”被正常解码,而后面我们传入的webshell的base64内容也被正常解码。结果就是<?php exit; ?>没有了。
    • 技术分享
    • 可以看到结果 <?php exit;?>已经不存在了。

      利用php://filter的strip_tags

      除了使用base64特性的方法外,我们还可以利用php://filter的strip_tags方法来去除“死亡exit”。

      strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。但是当我们直接使用strip_tags的时候。我们输入的shell的内容也会被过滤掉。

      技术分享但是php://filter支持多个过滤器。

      我们只需结合base64-decode即可实现getshell

      技术分享

死亡exit

标签:main   png   去除   pop   content   tools   忽略   编码   com   

原文地址:http://www.cnblogs.com/test404/p/6804829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!