由於還找到一款比較適合批量檢測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):一行一行讀取檔案裡面的url。只要匹配到有問號」?」或者有注入標記」*」才進行測試。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))
在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...