歡迎各位到我的博客參觀呀,大家共同學習

chenjingjiu.cn

1.Brute Force

一打開就是這種界面,因為是brute force,所以先嘗試爆破

查看一下源代碼

沒有任何防護手段,直接上BP

Ctrl+I進入intruder模塊

先clear ,然後選中要爆破欄位,點擊add

設置Payloads

選擇字典

讀取以後

可以看到共有2107條記錄,接下來設置Options,設置線程數,重試時間(只有pro版本有這個功能,普通版本無法進行設置,默認的也可以,就是速度慢一些)

點擊右上角的Start attack!

此時正在嘗試對密碼進行爆破,圖中白框中出現的是嘗試過的,點擊可以查看詳情

這是請求頭,最主要是看上面藍框中的Length欄位,找出與眾不同的一項

點擊length就可以對響應包的長度進行排序,找最大或最小的值,然後看這個HTTP請求的響應報文

點擊Response可以看響應報文信息,從響應報文中可以看出,紅框中框出的就是成功的意思,已經進入admin密碼保護區域。之所以需要找length與眾不同的一項就是因為響應報文不一樣,只要密碼正確和錯誤返回的不是同一個響應報文,其長度一般都是不同的,所以找出不同的一項,就可以找出正確的一項。將密碼password輸入看看結果

登錄成功

還有一種方法是利用sql注入

看代碼中的紅框圈出來的語句,沒有進行任何的防護,因此可以通過精心設計繞過該請求語句在user中輸入1』 or 『1』=』1 ,password為空,這樣可使上面的語句變成SELECT * FROM `users` WHERE user=admin or 『1』=』1』 AND password=;或者user輸入admin』 # ,password為空這樣可使上面的語句變成SELECT * FROM `users` WHERE user=admin # 』 AND password=;注意,在sql中#是注釋符號,後面的語句都會被注釋掉,也就是語句變成了

SELECT * FROM `users` WHERE user=admin

看看結果如何

2.命令執行

打開頁面就是這樣,框中讓填入IP地址,而本題又是命令執行,看看怎麼解決?

查看源碼

看圖中紅框圈出的語句,可以發現沒有任何的保護措施,ip欄位如果在IP後面加 『|』 再添加一個命令,則會直接執行該命令。

原始語句變成了ping | ls,直接輸出該目錄下的文件。這樣就可以操作伺服器中的文件,比如這樣

比如這樣|echo "(script)alert(xss)(/script)">1.php 圓括弧換成尖括弧

|cat 1.php

3.CSRF(跨站請求偽造)

打開時題目是這樣的

這個鏈接用來更新某個用戶的密碼,來看一下源碼

只要用戶訪問下圖這樣的鏈接,密碼就會被直接更改,毫無防備。

可是你要說了,我會這麼傻,點擊這種這麼明顯的惡意鏈接?那麼這樣呢

不要因為我沒做一個好看的頁面而說太假不看,就說內容吸引不吸引你?尤其是在春招當頭,一個阿里學姐學長的面經是多麼的寶貴呀,你動心不動心?點一下看看又沒啥,不是嗎?

哦,出錯了,文件未找到,可能是被刪除了吧。你也沒多想,你也沒感覺有啥不對勁,畢竟404你見得多了~這時,你再想訪問DVWA時,發現貌似有點問題

明明是這個密碼呀,怎麼錯誤了?聯想一下剛才我說的跨站請求,大概明白了點什麼,那到底發生了什麼呢?首先創建一個file.html,裡面寫下如下代碼

攻擊者將該鏈接寫入到img標籤的src里,訪問網頁時自動載入圖片,也就會自動訪問該網址,但是圖片已經被設置為不顯示了,所以你看不到,你看到的只是404然後攻擊者將這個鏈接放入到一個你感興趣的網頁,釣魚執法(再次強調別因為我頁面渣吐槽我)

然後你點擊鏈接,鏈接訪問file.html,自動載入圖片地址,訪問更改的網址,然後達到攻擊者目的,你的密碼就被修改了

4.文件包含

看題目的意思是讓我們把url的參數改一改呀,先看一看源碼吧

如此簡潔,真是令人賞心悅目,就是這個有點危險吧~A.本地文件包含構造鏈接192.168.150.131/dvwa/vu

返回了絕對路徑地址,可以看出來該伺服器是linux系統,那麼讀取絕對路徑文件php.ini看出來php.ini的配置信息

也可以用相對地址../../php.ini

B.遠程文件包含當伺服器的php配置中,選項allow_url_fopen與allow_url_include為開啟狀態時,伺服器會允許包含遠程伺服器上的文件,如果對文件來源沒有檢查的話,就容易導致任意遠程代碼執行。在本機伺服器中上傳l.php探針文件,然後利用該漏洞進行遠程包含

因為虛擬機中的DVWA出現了一些問題,沒法遠程包含,所以本題的遠程包含變成了本地包含虛擬機中的phpinfo.txt可以看到該頁面被遠程執行了,這樣其實有點明顯,很明顯看出來這個鏈接有問題,可以通過url編碼進行偽裝

也可以成功執行,試試hex編碼

失敗了,無傷大雅

5.SQL注入

看題

輸入用戶1

用戶2

輸入1』 or 『1』=』1

得到了全部用戶名,但是有啥用?輸入1』 order by 3#

輸入1』 order by 2#

暴庫:查詢database,1 union select 1,database()# ,可以看出database是dvwa

暴表名:查詢table_name, 1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=dvwa)#

暴欄位名:1 union select 1,(select group_concat(column_name) from information_schema.columns where table_name=guestbook)#

1 union select 1,(select group_concat(column_name) from information_schema.columns where table_name=users)#

後面顯示不下了,欄位實在太多了,不過已經夠了,看到了user和password欄位,接下來爆欄位暴欄位值:1 union select 1,(select group_concat(User,Password) from users)#

看到用戶名是admin,密碼是5f4dcc3b5aa765d61d8327deb882cf99看起來是MD5加密過的數據,在線解密一下

嗯,大功告成,這回看看源碼,一切進行的有點順利,並沒有對』等特殊符號與函數做相應處理

直接把id放到sql語句,沒有做任何處理。

6.SQL盲注

跟剛才的題差不多,試試剛才的解法有沒有問題暴庫:查詢database,1 union select 1,database()# ,可以看出database是dvwa

暴表名:查詢table_name, 1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=dvwa)#

暴欄位名:1 union select 1,(select group_concat(column_name) from information_schema.columns where table_name=users)#

這次少了很多列啊,咋回事呢?暴欄位值:1 union select 1,(select group_concat(User,Password) from users)#

依然可以成功,這是為啥?

對比一下兩回的源碼,只有紅框中內容不一樣,查詢後發現@為錯誤控制運算符,當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤信息都被忽略掉。原來只是丟失了回顯的錯誤信息,問題不大

7.文件上傳

看看源碼

雖說是上傳圖片,但是沒有對上傳文件做任何限制,直接上傳個一句話木馬。在trojan.php中寫入下圖代碼

上傳文件

文件地址直接返回給我們了,更方便了,菜刀連接一下

地址欄為原網頁地址+存儲後返回的地址,本例中是192.168.150.131/dvwa/vu,記得把#去掉連接一下

已經連接上了,可以看到別的文件夾的內容

8.反射型XSS

直接alert試試:(script)alert(xss)(/script)把圓括弧換成尖括弧

直接就成功了,沒有進行任何的防護

看看源碼,果然如此

9.存儲型XSS

輸入到這裡就輸入不了了,應該是對長度有限制,可以嘗試從下面注入,也可以bp改包繞過長度限制先試試message注入

結果成功了,此時頁面中多了一條記錄,就是test1,被存儲到資料庫中,這種xss危害性最大,具有永久性,且可以竊取所有訪問該頁面的用戶的cookie,而不需要像csrf和xss需要欺騙用戶進行點擊。以上就是DVWA低等級的通關實例,中級和高級也會出的,不要著急。路漫漫其修遠兮,吾將上下而求索。
推薦閱讀:
相关文章