由於還沒有找到一款比較適合批量檢測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...