通过一些apache日志,我已经多次遇到以下模式(URL解码):
GET /foo.php?id=1 and union select 0x5E5B7D7E,0x5E5B7D7E,0x5E5B7D7E,... --
显然这是一次SQL注入尝试.但为什么上面显示的常数?我看不出它有多么特别重要,尽管看起来很频繁.
对于它的价值,上面的常量映射到以下ASCII字符:" ^[}~
"或" ~}[^
",如果你颠倒字节顺序.十进制的值是1,583,054,206
八进制的013626676576
.代码似乎没有映射到有用的x86指令序列.
谷歌搜索这个数字只是揭示了在其他网站上使用相同的SQL注入攻击的尝试的残余 - 没有关于攻击本身的信息.
有人有任何见解吗?
该值是唯一标识符.如果^[}~
页面上出现值" ",那么机器人知道你很容易受到sql注入的攻击,就好像值" 0x5E5B7D7
"出现一样,那么你的sql服务器就不会解释它.这个SQL注入测试可能只用一个0x5E5B7D7E开始,然后继续预定义的数量.这是因为使用union选择union必须返回与要附加的select相同数量的列,并且bot必须强制使用此值.
请注意,此测试不适用于盲sql注入,因为值" ^[}~
"将不可见.一个盲目的SQL注入测试为MySQL将被注入到一个呼叫sleep(30)
或BENCHMARK(5000000,md5(1337))
.这将导致页面加载几秒钟,从而表示正在执行此sql代码.