【DVWA(一)】 安裝使用 & SQL注入學習心得



DVWA 環境搭建和安裝簡易使用

  1. 下載安裝phpstudy,這部分不用說了,肯定大家都有,或者安裝過。在瀏覽器輸入127.0.0.1,測試一下。
  2. 官網下載DVWA http://www.dvwa.co.uk ,解壓后放在phpstudy的www目錄下。
  3. 此時mysql的密碼還是空,登錄的時候會提示不能空,可以從phpstudy的界面【其他選項菜單】->【My SQL工具】->【重置密碼】。
  4. 將DVWA/confing下的config.inc.php.dist修改為config.inc.php,找到其中的db_password的對應值改為剛設置的。
  5. 瀏覽器輸入127.0.0.1/DVWA,出現登錄界面,賬戶名和密碼分別是:admin和password。

DVWA的簡介

首先,DVWA有多個模塊,涉及網絡安全的方方面面,其次,代碼等級分為Low,Medium,High,Impossible四個等級,在官方介紹中有提到High難度跟ctf接近。

因為研究生階段即將開始網安的學習,所以好好研究DVWA成了開學前給自己的重要任務。接下來將針對各個模塊進行學習筆記的記錄,因為是從頭學,所以難免啰嗦。

這篇文章只是針對我在學習研究DVWA過程中學到的知識點,和遇到的困難,有不對的地方還請大神不吝賜教。


 

DVWA - SQL注入

需要注意兩部分:第一,右下角有查看源代碼的按鈕,對於分析四個難度的區別很有幫助;第二,從我目前的知識水平覺得,SQL注入需要實戰經驗,所以接下來的筆記僅僅是沿着車轍,按圖索驥的學習。

【1】low

第一步,

習慣上輸入1,可以看到返回對應1的數據庫中的內容,而且輸出三行,分別是
ID:1
First name:xxx
Surname:xxx
具體內容不管,總之第一行是輸入的內容,原封不動顯示了,二三行是可以我們直接用來顯式顯示的內容欄。
 

第二步,

分別輸入1 and 1 = 1,和1 and 1 = 2;【這里我之前不理解,現在自己的理解是:這一步,可以看輸出內容,進而判斷是否存在注入點,因為輸出結果都一樣,所以源代碼一定是沒有對輸入內容進行判斷,所以,應該是存在注入點的】
 

第三步,

分別輸入1 'and 1=1#,和1 'and 1=2#;【此時 ‘ 和 # 為第一個1(id)形成了閉合】到這里,根據輸出內容,可以斷定,存在注入點了。
 

第四步,

1 'or 1=1 #,可以爆出所有內容,也就是有五個用戶,這一步我是為了驗證前幾步的觀點,下面就是暴庫,搞到密碼。
 

第五步,

暴庫: 關於這一步,其實有很多知識點,我還沒怎么入門,留着一個專門的坑整理這部分,已下是測試過常用的部分
  • 1' union select 1,database()# 爆出數據庫名稱:dvwa
  • 1 'UNION ALL SELECT version(),1# 爆出運行的mysql版本
  • 1 'UNION ALL SELECT table_name,2 FROM information_schema.tables# 爆出所有表名(此時是所有庫里的)
  • 1' union select 1,table_name from information_schema.tables where TABLE_SCHEMA='dvwa'# 爆出所有表名(dvwa庫里的)
  • 1' union select 1,column_name from information_schema.columns where table_name='users'# 根據爆出的表,去查找所有列
  • 1' union select user,password from users# 根據所有的列名,查找需要的對應的內容(這里我把那兩個顯式的輸出分別輸出user,password)

總結:到這里low等級注入攻擊結束,已經得到需要的全部密碼了,先用單引號和and測試是否有注入點,然后暴庫,根據庫暴表,根據表暴列,根據列找到所需的所有內容。

【2】medium

第一步,分析,medium級別是一個下拉列表,當改變輸入時,網址http://127.0.0.1/dvwa/vulnerabilities/sqli/#,可見多了#,但是無論怎么改網址都不變,所以應該不是get型,而是post型。

第二步,用hackbar測試一下(這里留一個關於hackbar安裝的坑,已補坑 https://www.cnblogs.com/wayne-tao/p/11022640.html),在post中輸入 id=3&Submit=Submit,運行發現,輸出正確,post型注入可行!

第三步,這時候就已經跟low等級一樣了,在id=之后輸入注入查詢代碼即可,注意此時 ‘ 和 # 提示錯誤,推測是源代碼進行了處理,所以去掉繼續嘗試,可行!到這里medium就解決了

總結:難度主要體現在下拉列表上和輸入檢查上,可以通過工具避開,其他原理跟low一樣,除了hackbar還有burp suite也可以實現,這里留着之后專門再研究這兩個工具,留坑,

補坑【Hackbar的相關用法】

【3】high

high等級很奇怪,我發現方法跟low完全一樣,唯一的問題是,change id需要從新的窗口輸入,輸入內容上跟low完全一樣。暫時還沒明白跟low等級的區別。留坑對四個等級源代碼進行對比分析

【4】impossible

impossible等級用的pdo,目前貌似是沒法注入

目前找到的方案是關於PDO的,Are PDO safe?但是現在我還看不懂。。。新坑

 


 推薦兩篇博客,我感覺寫的非常好!作為引入門和工具小全查看都可以

【總結】MYSQL注入 - Carrypan - 博客園

史上最完整的MySQL注入 - i春秋學院 - 博客園

以上,是學習SQL注入攻擊的全部筆記,會伴隨以后的學習持續更新。


免責聲明!

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



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