通过查看一些apache日志,我多次遇到以下模式(URL已解码):
GET /foo.php?id=1 and union select 0x5E5B7D7E,0x5E5B7D7E,0x5E5B7D7E,... --显然,这是一次SQL注入尝试。但是为什么会出现上面显示的常量呢?我看不出它有什么特别的意义,尽管它似乎经常出现。
值得注意的是,上面的常量映射到以下ASCII码字符:"^[}~",如果颠倒字节顺序,则映射为"~}[^“。十进制值是1,583,054,206,八进制值是013626676576。代码似乎没有映射到有用的x86指令序列。
在谷歌上搜索这个数字只会显示在其他站点上使用相同SQL注入攻击的残余尝试--没有关于攻击本身的信息。
有谁有什么见解吗?
发布于 2010-10-20 12:21:52
该值是唯一标识符。如果页面上出现值"^[}~“,则机器人知道您容易受到sql注入的攻击,就好像出现值"0x5E5B7D7”时,您的sql server没有对其进行解释。这个sql注入测试可能只从一个0x5E5B7D7E开始,然后继续到预定义的数量。这是因为对于union select,union必须返回与被追加到的select相同的列数,而bot必须暴力强制该值。
请注意,此测试将不适用于盲目的sql注入,因为值"^[}~“将不可见。mysql的blind sql injection test将注入对sleep(30)或BENCHMARK(5000000,md5(1337))的调用。这将导致页面需要几秒钟的时间才能加载,从而表示正在执行此sql代码。
https://stackoverflow.com/questions/3974268
复制相似问题