sqlmap支援自動偽靜態批量檢測

2022-09-02 01:15:12 字數 4155 閱讀 3336

由於還沒有找到一款比較適合批量檢測sql注入點的工具(proxy+sqlmapapi的方式批量檢測之類的批量sql注入點檢測),我的目光就轉向了sqlmap。雖然sqlmap沒有支援偽靜態注入點的測試(需要手動新增注入標記),由於是python寫的,可以快速方便的進行二次開發。

我的思路是在有.html之類的字尾或者既沒有.html或者包含"?"的url進行修改。

偽靜態注入點一般都在數字,所以我就在數字後面新增注入標記。字串的偽靜態就不搞了,搞了工作量就會新增很多。

用如下的url進行測試

#!bash

結果如下

#!bash

*

**如下:

#!python

if re.search('html|htm|sthml',url) or url.find("?") == -1:

flag = 0

suffix = ""

if re.search('html|htm|sthml',url):

suffix = "." + re.search('html|htm|sthml',url).group()

urllist = url.split("/")

returnlist =

for i in urllist:

i = re.sub('\.html|\.htm','', i)

if i.isdigit():

flag = 1

else:

url = '/'.join(returnlist) + suffix

returnlist =

if flag == 0:

for i in urllist:

if re.search('html|htm|sthml',i):

digitlist = re.findall('\d+',i)

for digit in digitlist:

i = i.replace(digit, digit + "*")

else:

url = '/'.join(returnlist)

print url

相關檔案

流程

sqlmap.py 116行start()->controller.py 256行setuptargetenv()->target.py 72行_setrequestparams()->target.py 117行

#!python

if kb.processusermarks is none and custom_injection_mark_char in conf.data:

message = "custom injection marking character ('%s') found in option " % custom_injection_mark_char

message += "'--data'. do you want to process it? [y/n/q] "

test = readinput(message, default="y")

if test and test[0] in ("q", "q"):

raise sqlmapuserquitexception

else:

kb.processusermarks = not test or test[0] not in ("n", "n")

if kb.processusermarks:

kb.testonlycustom = true

這裡檢測是否使用了注入標記。

sqlmap獲取完所有你指定的資訊後,開始正式檢測是否有注入之前,會檢測是否使用了注入標記"*",如果有的話就先處理這個注入標記的點進行測試。

這樣就明白注入標記的流程,只要_setrequestparams函式呼叫之前處理好url,就可以支援自動的偽靜態注入的測試了。

只要在260行處新增

#!python

if re.search('html|htm|sthml',conf.url) or conf.url.find("?") == -1:

flag = 0

suffix = ""

if re.search('html|htm|sthml',conf.url):

suffix = "." + re.search('html|htm|sthml',conf.url).group()

urllist = conf.url.split("/")

returnlist =

for i in urllist:

i = re.sub('\.html|\.htm','', i)

if i.isdigit():

flag = 1

else:

conf.url = '/'.join(returnlist) + suffix

returnlist =

if flag == 0:

for i in urllist:

if re.search('html|htm|sthml',i):

digitlist = re.findall('\d+',i)

for digit in digitlist:

i = i.replace(digit, digit + "*")

else:

conf.url = '/'.join(returnlist)

logger.info(conf.url)

這樣就可以了。

效果圖

這裡只是單個的,要支援批量檢測注入點。修改這裡是不行的。

583行處

#!python

for line in getfileitems(conf.bulkfile):

if re.match(r"[^ ]+\?(.+)", line, re.i) or custom_injection_mark_char in line:

found = true

kb.targets.add((line.strip(), conf.method, conf.data, conf.cookie, none))

一行一行讀取檔案裡面的url。只要匹配到有問號"?"或者有注入標記"*"才進行測試。

在583處新增

#!python

if re.search('html|htm|sthml',line) or line.find("?") == -1:

flag = 0

suffix = ""

if re.search('html|htm|sthml',line):

suffix = "." + re.search('html|htm|sthml',line).group()

urllist = line.split("/")

returnlist =

for i in urllist:

i = re.sub('\.html|\.htm','', i)

if i.isdigit():

flag = 1

else:

line = '/'.join(returnlist) + suffix

returnlist =

if flag == 0:

for i in urllist:

if re.search('html|htm|sthml',i):

digitlist = re.findall('\d+',i)

for digit in digitlist:

i = i.replace(digit, digit + "*")

else:

line = '/'.join(returnlist)

效果圖:

sqlmap實現自動偽靜態批量檢測

由於還找到一款比較適合批量檢測sql注入點的工具 proxy sqlmapapi的方式批量檢測之類的批量sql注入點檢測 我的目光就轉向了sqlmap。雖然sqlmap沒有支援偽靜態注入點的測試 需要手動新增注入標記 由於是python寫的,可以快速方便的進行二次開發。我的思路是在有.html之類的...

APMServ 支援 htaccess偽靜態

假如你的apmserv安裝在x盤apmserv5.2.6目錄的話請按以下步驟做。如果沒有設定虛擬主機請如下設定 找到allowoverride none 改成allowoverride options fileinfo 重啟apache服務即可 如果有設定虛擬主機請按以下設定,我是有設定虛擬主機的所...

tinkphp URL重寫,支援偽靜態

通常的url裡面含有index.php,為了達到更好的seo效果可能需要去掉url裡面的index.php 通過url重寫的方式可以達到這種效果,通常需要伺服器開啟url rewrite模組才能支援。下面是apache的配置過程,可以參考下 1 httpd.conf配置檔案中載入了mod rewri...