基於本地驗證文件是否符合要求:直接將JavaScript禁用。或者burp抓包後修改後綴,將php文件後綴現先改成jpg,burp抓包後後綴改回php。php
burp抓包將Content-type類型修改成image/jpeg,image/png等
html
phtml php3 php4 php5 PHP phtm前端
例如phtml php3 php4 php5 PHP phtm
這些後綴名首先得讓服務器支持這些解析爲php腳本運行,httpd.conf配置文件中能夠查看設置。瀏覽器
從圖中能夠看到,我安裝的Apache默認解析php和phtm的,若是黑名單並無過濾phtm,就能夠上傳phtm的木馬。服務器
例如phP,黑名單上不存在的話就能夠繞過,過濾嚴格的話通常會用個strtolower()把後綴全變爲小寫,那個時候就不行了。app
構造圖片馬,或者用winhex在圖片後邊添加上木馬的內容,一個原理。ide
例如<?php函數
<script language="php">eval($_POST['cmd']);</script>
沒啥用,通常上傳的木馬超不過那個大小。編碼
計算機處理文件遇到0x00(表明NULL)則會自動截斷後邊的內容,而較低版本的php就會由於這個出現漏洞。
通常分爲兩種那個狀況:url
burp抓包在上傳路徑後邊加上muma.php%00,而後將%00進行url編碼(crtl+shift+u),(瀏覽器還要進行url解碼,因此先編碼後解碼,保證原來的字符不變)上傳。
文件名改成muma.php+.jpg,這個+ 其實就是個標識做用,改別的字符也行。burp抓包後,hex打開,將+的數值改成00,實際上表明就是0x00.
上傳。不過00截斷很舊了已經,如今基本找不到這種漏洞了。
Apache纔有效的一個配置文件,直接配置Apache達到隨心所欲的目的,默認開啓。若是不開啓,找到httpd.conf配置文件:
Options FollowSymLinks
AllowOverride None
改成:
Options FollowSymLinks
AllowOverride All
即完成了開啓。
在有的時候黑名單過濾不嚴格,就會漏掉過濾.htaccess文件 。
這段代碼就是讓以ma.jpg的文件以php文件執行。上傳圖片後,無論圖片名字有沒有被自動重命名,訪問的圖片的地址看最後會有服務器上圖片的名字,而後用.htaccess進行配置便可。
也能夠直接Addtype application/x-httpd-php .jpg
.全部的jpg都會以php腳本運行。
最難繞過的方法。繞過方法請參考其餘方法。
若是對文件的內容例如<?php用str_replace()使其變爲空,就能夠構造特殊的內容例如<?p<?phphp,過濾後就變爲了<?php,達到了繞過的目的。
不過我以爲沒啥用,他要是循環過濾那不就完了,寫代碼的時候確定不會只給你過濾一次啊。