iwebsec–代码执行漏洞
文章目录
01-代码执行漏洞eval函数示例
<?php
if(isset($_POST[1])){
@eval($_POST[1]);
}else{
exit();
}
?>
代码审计
如果post请求中有1,就会执行1中的参数
02-代码执行漏洞assert函数示例
<?php
if(isset($_POST[1])){
@assert($_POST[1]);
}else{
exit();
}
?>
assert()函数和evel()函数类似,能把里面的字符串转化为php代码执行
03-代码执行漏洞call_user_func函数示例
<?php
if(isset($_POST['fun'])||isset($_POST['arg'])){
call_user_func($_POST['fun'], $_POST['arg']);
}else{
exit();
}
?>
call_user_func()函数第一个参数是函数,第二个参数是调用的参数
fun=“系统执行的函数”,而arg=“系统执行的命令”
在这里插入代码片
可以说,如果黑客知道有这个函数那么后果是非常严重的,可以写入任意的语句
04-代码执行漏洞call_user_func_array函数示例
<?php
if(isset($_POST['fun'])||isset($_POST['arg'])){
call_user_func_array($_POST['fun'], $_POST['arg']);
}else{
exit();
}
?>
和call_user_func一样没太大区别
05-代码执行漏洞create_function函数示例
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
$code = 'echo '.$func.'test'.$id.';';
create_function('$func',$code);
}else{
exit();
}
?>
create_function()函数, f u n c 构 造 的 函 数 , 而 func构造的函数,而 func构造的函数,而code构造的是代码执行
?id=1;}phpinfo();/*
这里就是将函数进行闭合{echo $id;}在执行phpinfo();
06-代码执行漏洞array_map函数示例
<?php
if(isset($_GET['func'])||isset($_GET['argv'])){
$func=$_GET['func'];
$argv=$_GET['argv'];
$array[0]=$argv;
array_map($func,$array);
}else{
exit();
}
?>
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
?func=system&argv=pwd
07-代码执行漏洞preg_replace漏洞函数示例
<?php
if(isset($_GET["name"])){
$subject= 'hello hack';
$pattern = '/hack/e';
$replacement = $_GET["name"];
echo preg_replace($pattern, $replacement, $subject);
}else{
exit();
}
?>
特别说明:
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。
08-可变函数漏洞示例
<?php
if(isset($_REQUEST['func'])){
function func1() {
echo "func1函数";
}
function func2($arg = '') {
echo "func2函数";
}
function func3($arg){
echo "func3函数的参数是".$arg;
}
$func = $_REQUEST['func'];
$arg = $_REQUEST['arg'];
echo $func($arg);
}else{
exit();
}
?>
爱我所爱,悔不当初–沃兹基硕德