除了前章所講的以外,另外還有其他方法也能執行代碼:
Curly Syntax
PHP 會執行大括號中的代碼,例如:
$var = "I don't know what it is until i found this {ls
}";
ls 將會執行,並將結果返回。
Callback 函式執行代碼
很多函式可以執行 Callback 函式,但當 Callback 函式若為可控的即會造成代碼執行,例如:
<? php
$evil_callback = $_GET['callback'];
$some_array = array(0,1,2,3);
$new_array = array_map($evil_callback, $some_array);
?>
攻擊 payload :
/index.php?callback=phpinfo
在 PHP 中,這樣的函式有很多,平時在調用時就該多多留心一下。
unserialize() 代碼執行
unserialize() 是使用率非常高的函式,但若在執行時定義了 __destruct() || __wakeup() ,則很有可能透過偽造的 serializing object 執行代碼,但能執行什麼樣的代碼則須依據前面兩個函式的邏輯處裡。