WeChall_PHP-Local File Inclusion(LFI)
PHP - Local File Inclusion(LFI)
題目:
中文翻譯如下:
核心代碼:
$filename = 'pages/'.(isset($_GET["file"])?$_GET["file"]:"welcome").'.html'; include $filename;代碼詳解:
- 當(dāng)要 判斷一個變量是否已經(jīng)聲明的時候 可以使用 isset 函數(shù)
- 判斷表達(dá)式是否成立?表達(dá)式1:表達(dá)式2(三目運(yùn)算符)
如果條件成立,執(zhí)行表達(dá)式1,否則執(zhí)行表達(dá)式2 - include:運(yùn)行指定文件
從以上代碼中看出,我們每次輸入的文件名都會在最后加上.html,我們需要刪除.html,在php<5.3.4版本之前,是存在00截斷漏洞的,因此我們可以嘗試使用00截斷
%00截斷介紹:
%00截斷,例如1.php%00.txt,白名單在測試時會直接將這個帶入,判斷后綴名(因?yàn)榇藭r1.php%00.txt是一個字符串整體),但執(zhí)行該代碼時,會自動截斷%00后面的內(nèi)容,只要記住會刪除包括%00及后面的所有內(nèi)容解題過程:
-
首先題目提到,需要執(zhí)行solution.php,那么我們直接訪問試試看呢
(中文釋義:您不能直接執(zhí)行此腳本。請在up/index.php中使用LFI vuln包含它。) -
這是最簡單的本地文件包含,這里不能直接在lfi目錄下執(zhí)行solution.php,需要使用到../,看到下方有文件包含,因此,我們先在題目中選擇一個進(jìn)去看看
如下圖:
-
我們在url中再來試試下面的測試
(中文釋義:
PHP警告(2):include(pages / solution.php.html):無法打開流:/ home / wechall / www / wc5 / www / challenge / training / php / lfi / up / index中沒有這樣的文件或目錄 .php(54):eval()‘代碼 行 1
PHP警告(2):include():無法在/ home / wechall / www / wc5 / www / challenge中打開’pages / solution.php.html’以包含(include_path =’。:/ usr / share / php’) /training/php/lfi/up/index.php(54):eval()'d代碼 行 1)
- 看到這個顯示up中沒有中沒有solution.php.html,猜想可能是html的問題,于是我們使用00截斷
結(jié)果如下圖:
- 這回是刪除了,但是還是沒有顯示,于是我們返回上面幾層目錄看看
根據(jù)這個我們才看出,solution.php是在lfi目錄下,因此,我們使用…/來訪問(注:這里直接使用http://www.wechall.net/challenge/training/php/lfi/solution.php是不行的,他強(qiáng)制要求你使用本次文件包含) - 最后在http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=solution.php%00中重新構(gòu)造url,構(gòu)造時需要注意,solution.php在lfi目錄下,但他代碼在執(zhí)行中會增加一個pages目錄,本來我們使用下面這個構(gòu)造就可以
但執(zhí)行后卻是下圖所示這時(注:它這時的目錄為http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=pages/../solution.php%00):
多了一個pages目錄,我們需要到達(dá)lfi目錄就需要使用兩個../,第一個../跳出pages,第二個../跳出up到達(dá)lfi。最后,構(gòu)造的url為
www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00執(zhí)行結(jié)果為:
成功完成LFI
總結(jié)
以上是生活随笔為你收集整理的WeChall_PHP-Local File Inclusion(LFI)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你快速清理运存,提升 iPhone 运
- 下一篇: 最新qq男生繁体字网名大全98个