ctfshow檔案上傳漏洞做題記錄

折翼的小鸟先生發表於2024-03-08

ctfshow檔案上傳漏洞做題記錄

前言:之前發的部落格已經做了檔案上傳漏洞的一些做題,今天來記錄一些理論的知識以及之前沒做完的題

1.1 前置基礎知識

檢測層面:前端和後端

檢測內容 : 檔案頭 完整性,二次渲染等

檢測字尾: 黑名單 白名單 MIME檢測等

1.2 ctfshow web 158

相比前幾個題,這個題還多過濾了() 這時候之前的後門就沒法用了,我們想要呼叫eval函式總是需要括號,這時

候考慮直接輸出我們的flag,但是括號又不能用了,該如何解決呢? 這時候就要使用反引號了。

php中反引號會將其中的內容放在system()中執行,但需要注意的是執行的結果並不會自己輸出,所以我們要手動

輸出。所以我們根據此原理我們可以寫出後門

<?=`tac ../f*`?>

1.3 ctfshow web 159

payload和上一題沒有任何區別,應該是加了點過濾,秒了

1.4 ctfshow web 160

本題過濾掉了反斜槓,我們需要更換思路了

我們已知在nginx下會將請求的Ua頭記錄在預設的日誌檔案中,那我們將後門程式碼寫入ua頭,然後包含日誌檔案即

可實現後門的寫入。

在ngnix下日誌記錄檔案儲存於 /var/log/nginx/access.log

因此我們有了payload的寫法

<?include"/var/lo"."g/nginx/access.lo"."g"?>

將payload寫入a.png,利用.user.ini包含a.png,然後a.png中的程式碼包含了日誌檔案,然後在隨便上傳一個圖片,

或者訪問一下upload,直接在ua頭處直接寫入

<?=`tac ../fla*`?>

然後訪問upload/下即可獲得flag

1.5 ctfshow web 161

本題除了上面的過濾,還設定了對檔案頭的過濾

檔案頭是位於檔案開頭的一段資料,作業系統透過識別檔案頭,可以識別檔案的型別,並決定用何種程式來開啟該

檔案。在本題中只有gif檔案的檔案頭能透過前端驗證gif的檔案頭為GIF89a

其餘步驟和上一題相同。

相關文章