目錄遍歷


目錄遍歷

ctfhub中web基礎技能樹,總共只有4*4 16個,可以手動查找flag所在目錄,也可編寫python腳本實現。

import requests

url = "http://challenge-e87efa4af8a8d0df.sandbox.ctfhub.com:10800/flag_in_here/"

for i in range(5):
    for j in range(5):
        url_final = url  + str(i) + "/" + str(j)
        r = requests.get(url_final)
        get_file=r.text
        if "flag.txt" in get_file:
            print(url_final)

路徑遍歷攻擊(也稱為目錄遍歷)是指在訪問儲存在web根目錄文件夾之外的文件和目錄。通過操縱帶有“點-斜線(..)”序列及其變化的文件或使用絕對文件路徑來引用文件的變量,可以訪問存儲在文件系統上的任意文件和目錄,包括應用程序源代碼、配置和關鍵系統文件。

​ 一般來講網站會對目錄遍歷進行防御,可以采用以下繞過方法。

1. 加密參數傳遞的數據

​ 有的網站程序傳遞參數后會進行base64加密(當然也會有其他加密),導致我們傳遞的參數無法解析,所以就無法利用目錄遍歷,而繞過方式也很簡單,就是先對參數進行base64加密后再進行傳參。如:?page=bTByZS50eHQ=

2. 編碼繞過

​ 進行傳參時將參數進行編碼,實現繞過,比如URL編碼。?page=%6D%30%72%65%2E%74%78%74

3. 目錄限定繞過

​ 有些Web應用程序是通過限定目錄權限來分離的。可以使用一些特殊的符號~來繞過。比如提交這樣的xxx.php?page=~/../boot。就可以直接跳轉到硬盤目錄下。

4. 繞過文件后綴過濾

​ 一些Web應用程序在讀取文件前,會對提交的文件后綴進行檢測,攻擊者可以在文件名后放一個空字節的編碼,來繞過這樣的文件類型的檢查。
比如:../../../../boot.ini%00.jpg,Web應用程序使用的Api會允許字符串中包含空字符,當實際獲取文件名時,則由系統的Api會直接截短,而解析為../../../../boot.ini
在類Unix的系統中也可以使用Url編碼的換行符,例如:../../../etc/passwd%0a.jpg如果文件系統在獲取含有換行符的文件名,會截短為文件名。也可以嘗試%20,例如: ../../../index.php%20

5. 繞過來路驗證

Http Referer : HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的
在一些Web應用程序中,會有對提交參數的來路進行判斷的方法,而繞過的方法可以嘗試通過在網站留言或者交互的地方提交Url再點擊或者直接修改Http Referer即可,這主要是原因Http Referer是由客戶端瀏覽器發送的,服務器是無法控制的,而將此變量當作一個值得信任源是錯誤的。

參考資料

https://www.freebuf.com/vuls/247620.html

https://www.cnblogs.com/quail2333/p/12489904.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM