代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行。当应用在调用一些能将字符串转化成代码的函数(如php中的eval)时,没有考虑到用户是否能控制这个字符串,将造成代码注入漏洞。狭义的代码注入通常指将可执行代码注入到当前页面中,如php的eval函数,可以将字符串代表的代码作为php代码执行,当前用户能够控制这段字符串时,将产生代码注入漏洞
eval和assert 回调函数 动态执行函数 preg_replace函数
1.eval()、assert()将输入的字符串参数作为PHP程序代码来执行
2.回调函数mixed call_user_ func ( callable callback [, mixed parameter [, mixed … ]])callback是要调用的自定义函数名称
<?php
function callBack()[
$b = $_GET['cmd'];
eval($b);
]
call_user_func(function'callBack',$b);
?>
3.动态执行函数
1.定义一个函数
2.将函数名(字符串)赋值给一个变量
3.使用变量名代替函数名动态调用函数
4.preg_replace
mixed preg_replace ( mixed $pattern,mixed $replacement , mixed $subject [, int $limit =-1 [, int &$count]])
$pattern正则匹配的内容
$replacement用于替换的字符串或字符串数组
$subject要进行搜索和替换的字符串或字符串数组
$pattern存在/e模式修正符修饰 允许代码执行
正则表达式语法规则 普通字符作为原子
限定符 特殊符号作为原子
边界限制符 通用字符类型作为原子
后向引用 自定义原子表作为原子