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
其餘步驟和上一題相同。