編寫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。