原理:以往lfi漏洞都是需要滿足兩個條件:1.攻擊者上傳乙個含php**的的檔案,字尾名任意,沒有字尾名也可以;2.需要知道上傳後的檔案路徑及檔名,然後包含之。
後來有國外研究者發現了新的攻擊方式,話說外國基佬的思路確實夠猥瑣。該思路的原理是:php在以enctype=multipart/form-data方式post檔案時,不論post到哪個檔案,php都會在臨時目錄中生成乙個臨時檔名,然後呼叫指令碼處理該臨時檔案,最後刪除這個臨時檔案。於是乎新的攻擊思路成形了:可以post到phpinfo.php檔案,這樣可以直接獲得臨時檔案的路徑和名稱,然後在php刪除臨時檔案之前包含這個臨時檔案即可。這裡最麻煩的是如何在臨時檔案被刪除之前包含它通常有這麼幾種考慮:1.上傳大檔案,這樣php的處理就會變慢,經過實際測試,大概3m左右的時候就可以肉眼看到生成的臨時檔案了,雖然會很快被刪除,但是這裡確實能看到從生成到刪除的全過程了。2.通過大量請求來延遲php指令碼的處理速度。
測試檔案如下:
phpinfo.php
1view code<?php
2phpinfo
();3 ?>
curlpost.php(使用php curl來模擬表單提交資料,模擬表單的**參考了這裡在他的基礎上做了修改)
58* curl檔案上傳
59* @var struing $r_file 上傳檔案的路勁和檔名
60*
61*/
62/*
63function upload_file($url,$r_file)
64*/
7677
function upload_file($url,$filename,$path,$type
)104
105106
107108
if ($_post
)
149 ?>
150151
lfi.php
1測試用的大檔案post.txt,5m多一點,這個很容易生成就不貼**了,截個圖看下效果<?php
2include($_get['file']);
3 ?>
最後執行的效果
最後可以看到shell已經生成了
冒煙測試 測試 Beta測試 效能測試
冒煙測試 也可稱為showcase 這一術語描述的是在將 更改嵌入到產品的源樹中之前對這些更改進行驗證的過程。冒煙測試 smoke test 在測試中發現問題,找到了乙個bug,然後開發人員會來修復這個bug。這時想知道這次修復是否真的解決了程式的bug,或者是否會對其它模組造成影響,就需要針對此問...
軟體測試中的 測試 測試和 測試
常用來表示軟體測試過程中的三個階段,是第一階段,一般只供內部測試使用 是第二個階段,已經消除了軟體中大部分的不完善之處,但仍有可能還存在缺陷和漏洞,一般只提供給特定的使用者群來測試使用 是第三個階段,此時產品已經相當成熟,只需在個別地方再做進一步的優化處理即可上市發行。在軟體交付使用之後,使用者將如...
軟體測試中的 測試 測試和 測試
常用來表示軟體測試過程中的三個階段,是第一階段,一般只供內部測試使用 是第二個階段,已經消除了軟體中大部分的不完善之處,但仍有可能還存在缺陷和漏洞,一般只提供給特定的使用者群來測試使用 是第三個階段,此時產品已經相當成熟,只需在個別地方再做進一步的優化處理即可上市發行。在軟體交付使用之後,使用者將如...