CTF從入門到提升(十)文件上傳

  • ​​服務端校驗——白名單

白名單和上一節講的黑名單的區別在哪裏?黑名單是未經許可非法用戶禁止入內,我禁止某些人入內,大部分人是可以進去的。白名單是未經允許禁止入內,只有允許的人才能進入,對應的文件上傳就是隻有合法文件才能上傳。解析的時候我們爲什麼要文件合法?因爲中間件能夠解析,只允許不能被解釋的文件且只符合當前業務的文件才能夠上傳。比如頭像png、jpg、gif,不需要其他的文件名,做好限制極大地杜絕安全問題。

從規則上來講白名單是比較難突破的,除非類似%00截斷,而且這種截斷也要看具體代碼邏輯才能夠實現,從代碼層面去做突破略難。簡單的題目有配合Apache的解析漏洞以及其他漏洞。像多層壓縮包嵌套、或者本身有缺陷產生的文件上傳問題等等後面都會分享,本次內容爲配合Apache的解析缺陷。

在這裏插入圖片描述

我使用的環境一般是放在Linux下Apache用的比較多,包括nginx 和 IIS 都存在這種解析漏洞的。所以白名單突破需要配合的就是中間件的缺陷。

具體環境操作如下:
在這裏插入圖片描述

上傳.php禁用js,非法文件禁止上傳。開啓bp那麼去傳一個 jpg文件,
在這裏插入圖片描述

提示非法文件禁止上傳。

在這裏插入圖片描述

- 服務端校驗——文件內容頭校驗

內容頭校驗涉及到一些函數,例如對圖像處理的函數。比如getimagesize獲取圖像大小。
在這裏插入圖片描述

如果不是指定的圖像、有效的圖像,就會產生一條false,這個函數可以判斷這個文件是不是一個圖片。
在這裏插入圖片描述
新建一個文件:
在這裏插入圖片描述
在這裏插入圖片描述
很多文件有對應的文件格式:
在這裏插入圖片描述

這些函數是通過文件頭來做判斷的。如果可以把這個文件頭給僞造出來,基本可以對它實現欺騙成功繞過。
在這裏插入圖片描述

- 競爭上傳

競爭上傳是邏輯上的錯誤文件上傳成功後,正常邏輯是後端代碼一直在運行檢測,合法就可以保存,不合法直接刪掉。
在這裏插入圖片描述

在遠程服務器上寫入a.php
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
過5秒鐘就刪掉,會形成產生一個臨時文件的,趁臨時文件沒有被刪掉趕緊訪問。這種題目對服務器的性能影響比較大。

  • 舉栗子

上傳php 文件,進行訪問,顯示查不到。
在這裏插入圖片描述

我們可以考慮讓剛上傳的文件去生成一個新的文件產生新的需要。
在這裏插入圖片描述

第一個是文件名,下面是文件的內容,可以content寫入文件。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
以上內容參考安全牛課堂《CTF從入門到提升

課程地址:https://www.aqniukt.com/my/course/8954

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章