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

2021-08-01 15:23:45 字數 3802 閱讀 9995

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

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

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

用如下的url進行測試

結果如下

*

**如下:

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行

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行處新增

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行處

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處新增

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之...

偽靜態的實現

所謂的偽靜態頁面,就是指的url重寫,在asp.net中實現非常簡單 首先你要在你的專案裡引用兩個dll actionlessform.dll urlrewriter.dll 真正實現重寫的是 urlrewriter.dll 但是如果你要實現分頁,那麼必須使用這個actionlessform dll...

yii實現偽靜態

一 調整apache配置檔案httpd.conf,重啟apache伺服器。1.裝載rewrite module模組 loadmodule rewrite module modules mod rewrite.so 2.相對應目錄的allowoverride修改為all documentroot us...