工具 sqlmap payload修改之路(下)

2021-08-15 10:33:12 字數 3490 閱讀 2732

完整地學習sqlmap與payload有關的xml檔案下的payload檔案。

上週通過乙個例子讓大家大致了解了sqlmap 如何新增以及修改payload,本週就讓我們通過完整地學習sqlmap與payload有關的xml檔案下的payload檔案,我們都知道sqlmap有6大探測注入型別的技術,分別是

1.union query sql injection(可聯合查詢注入)

聯合查詢簡單來說就是通過union關鍵字將多條查詢語句拼接在一起,並且把查詢結果作為乙個結果以乙個**的形式輸出到頁面,需要注意的是查詢語句要符合1.相同列數2.相似的資料型別3.相同的編碼。示例語句:-1′ union select 1,(select user()),(select version())–+,如果 查詢結果無法返回到頁面,則就需要考慮盲注。

2.error-based sql injection(報錯型注入)

報錯注入的核心思想是通過資料庫的「人性化的報錯定位機制」將我們要查詢的資料通過報錯的方式直接回顯到頁面上來,示例語句:』 and (extractvalue(1,concat(0x7e,(select user()),0x7e)))–+,當然如果報錯的資料不能回顯到頁面上來,就無法使用報錯注入,這時候我們就可以考慮是否存在盲注。

3.boolean-based blind sql injection(布林型注入)

布林盲注的核心思想就是通過判斷兩種不同的頁面狀態來進一步推斷注入語句是否被執行以及資料是否存在。示例語句:1′ and database() regexp 『^1′ –+,當我們輸入的注入語句無法通過回顯以及報錯的方式來獲取資料,這時候就可能存在盲注,通過判斷有跟沒有、對或錯來判斷regexp 是否匹配到資料了。

4.time-based blind sql injection(基於時間延遲注入)

如果在測試的時候發現都不存在前面三種所說的注入,那就有可能是時間盲注,時間盲注的特點是無回顯,無報錯,也沒有多種頁面狀態。這時候就需要通過增加sleep()函式來判斷注入語句的執行,而布林則是根據頁面的對錯來判斷。示例語句:1′ and sleep(5)–+ 如果sleep則說明存在時間盲注

5.stacked queries sql injection(可多語句查詢注入)

多語句查詢注入也叫做堆疊查詢,與聯合查詢有點相似,都可以多條語句查詢,堆疊查詢的關鍵是分號(;)比較直觀的就是如果分號被過濾或者無法繞過就無法注入,當然還有一些資料庫引擎不支援,許可權不足等限制,實際工作中遇到的也很比較少,這裡就不做過多討論。

6.inline queries(內聯查詢注入)

碰到的比較少,這裡暫不做過多討論。

sqlmap根據6大型別探測技術生成的payload就放在sqlmap原始碼中\xml\payloads檔案中,根據探測技術分為6個字尾為.xml的檔案,每個xml檔案分別存放每種注入技術的payload。

sqlmap的payloads檔案:

首先我們來了解下xml是什麼,xml就是可擴充套件標記語言,標準通用標記語言的子集,簡單來說就是sqlmap用xml語言來定義多個不同的標籤組成乙個payload的模板,每個標籤有設定不同的等級,通過這樣的方式可以實現靈活組合和呼叫payload。所以我們就必須先了解sqlmap定義的每個標籤的意思和作用。

step2:

標籤的意思和作用可以直接通過在sqlmap原始碼的\xml資料夾中的boundaries.xml檔案以及\xml\payloads資料夾下的.xml檔案的注釋中檢視,通過查詢xml檔案中的注釋,我們知道sqlmap上的boundaries.xml定義的

由上面的

最終的payload = where + boundary.prefix+test.payload+boundary.suffix,影響最終payload的生成主要由

下面我們就具體來這兩個檔案下,具體每個標籤的作用,首先來看 boundaries.xml檔案吧,下圖所示的是乙個完整的

sub-tag:sub-tag: 該標籤說明了sqlmap使用的條件從句,其中always表示測試所有

sub-tag: 該標籤定義了payload寫入的位置詳見sub-tag: 舉個栗子來說:假設如下查詢語句?id=1' union select * from persons where city='beijing'--+
其中?id=1後面的單引號是由字首標籤定義的,–+是由字尾標籤定義的,而中間語句所要使用的字元則是由sub-tag: 注入語句的字首定義了注入中常用到閉合或者注釋的字元,例如 右括號),單引號加右括號』),兩個右括號))等等。

sub-tag: 顧名思義就是定義了sql注入的語句的字尾,比如說常見的注釋符、也可能是另外的sql語句看具體情況。

#step2.2:

乙個完整的test payload模板:部分截圖如下

裡面定義了比step3:

當然sqlmap的注入除了需要payload還有一些其他的xml檔案,如下圖所示

想要了解每個標籤的作用效果,我們可以通過sqlmap豐富的指令指定使用的xml檔案,如果沒有指令可以指定xml我們可以手動通過增加、修改、刪除xml檔案下的元素,來縮小範圍,這樣我們就能知道每個標籤的作用效果。

專欄 2

漏斗社群

51 篇文章

等級: 1級

| |

工具 sqlmap payload修改之路(下)

上週通過乙個例子讓大家大致了解了sqlmap 如何新增以及修改payload,本週就讓我們通過完整地學習sqlmap與payload有關的xml檔案下的payload檔案,我們都知道sqlmap有6大探測注入型別的技術,分別是 1.union query sql injection 可聯合查詢注入 ...

ftp 工具 ftp工具,簡易ftp工具

第一款 iis7伺服器管理工具 這款工具的顏色搭配的也挺好看的,綠白相間。介面清晰明了。iis7伺服器批量管理工具好處 批量管理 同步操作 到期提醒 資料安全和定期執行。適用系統 windows和liunx作業系統。支援vnc和ftp批量操作。相信我準沒錯,這絕對是一款讓你愛不釋手的免費ftp工具。...

linux ssh工具 file 訪問工具

ubuntu下有沒有類似xshell securecrt這樣能儲存ip並且可以對這些ip分類管理的ssh telnet客戶端工具呢?另外linux下的putty,用金鑰方式我無法登入伺服器。sudo apt get install putty gftp帶ssh2 需要的時候,只用gftp。方便而已。...