[PHP] 用不同的標籤繞過上傳內容檢查

2018, Dec 03    

部分網站對上傳的文件內容進行檢查,如果發現有”<?php”則判斷為webshell。這種情況下,我們可以通過不同的PHP標籤來繞過上傳的內容檢查。

可用的PHP標籤有:

  1. <?php phpinfo(); ?>
  2. <? phpinfo(); ?> 在開啟了short_open_tag後即可使用,無版本限制,在PHP5.3及以後默認開啟。
  3. <?=phpinfo()?> 在PHP5.4前,開啟了short_open_tag後即可使用;在PHP5.4及以後,任何情況(包括short_open_tag=off)下都支援。
  4. <% phpinfo(); %> 在開啟了asp_tags後即可使用,默認不開啟,PHP7.0及以後移除了這種方式。
  5. <script language="php">phpinfo();</script> 在PHP5下支援,PHP7.0及以後移除了這種方式。

程式碼

<?php
$code = file_get_contents($_FILES['file']['tmp_name']);
if(stripos($code, '<?php') !== false) {
    exit('illegal content');
}
move_uploaded_file($_FILES['file']['tmp_name'], $new_filename);

資料來源

https://tricking.io/card/24/content