編寫ldap掃描插件時,遇到的問題是,如何判斷頁面有變化。如果是已知的頁面,可以根據頁面中的字符串判斷變化;如果是未知的頁面,也就是通用頁面,可以參考sqlmap:
sqlmap中,頁面相似度的判斷位於 lib/request/comparison.py,其中 _comparison為核心判斷函數。
從中剝離出來,如下代碼:
def compartion(cont1,cont2):
"""
頁面相似度檢測
"""
UPPER_RATIO_BOUND = 0.95
seqMatcher = difflib.SequenceMatcher(None)
seqMatcher.set_seq1(cont1)
seqMatcher.set_seq2(cont2)
ratio = seqMatcher.quick_ratio()
if ratio < UPPER_RATIO_BOUND:
return False
else:
return True
其中,cont1,cont2代表兩個頁面的content,sqlmap中相似度UPPER_RATIO_BOUND的值為0.98,在程序中,相同的頁面都達到了0.98,確實已經夠用了,但是為了容錯率,改為了0.95。
