可能是一种检测SQLMAP扫描的方式
MayIKissYou | 2014-09-16 16:30
最近在写识别网络扫描的规则,SQLMAP扫描制作规则的时候,发现了一点东西,分享给大家,可能是检测SQLMAP注入扫描的一种方式。
使用sqlmap扫描的时候发现每次扫描的第二个包内容如下:
http://127.0.0.1?id=1..]"')[.]"
注意后面的那串字符,我又多试了几次,发现每次发送的还不一样,但是长度都是10个字符。
于是就跑去看了看sqlmap的源码:
发现在checks.py的文件里面有一个函数名称为heuristicCheckSqlInjection()
里面有段代码:
while '\'' not in randStr: randStr = randomStr(length=10, alphabet=HEURISTIC_CHECK_ALPHABET)
然后我们去查看randomStr,此函数在common.py下,相关代码如下:
def randomStr(length=4, lowercase=False, alphabet=None): """ Returns random string value with provided number of characters >>> random.seed(0) >>> randomStr(6) 'RNvnAv' """ if alphabet: retVal = "".join(random.choice(alphabet) for _ in xrange(0, length)) elif lowercase: retVal = "".join(random.choice(string.ascii_lowercase) for _ in xrange(0, length)) else: retVal = "".join(random.choice(string.ascii_letters) for _ in xrange(0, length)) return retVal
然后去查看了HEURISTIC_CHECK_ALPHABET,值为('"', "'", ')', '(', '[', ']', ',', '.')
基本得到这样的结论,这串randStr的值为一个十个随机字符的长度字符串,其中至少包含',随机字符串的内容在('"', "'", ')', '(', '[', ']', ',', '.')里。
据了解大部分厂商在写规则的时候都是用到了正则表达式这个东西,是否将上面的内容翻译为一条SQLMAP注入扫描的规则。
感觉应该比user-agent里使用sqlmap要强一点点。
留言评论(旧系统):