小心你的WEB应用程序成为数据窃贼的帮凶(5) |
发布时间: 2012/6/11 19:28:50 |
让盲目攻击起作用
假设在示例页面中,我们已经发现了盲目注入,我们希望发现关于表和数据库设计的细节。请看下面的请求: wangzhan.com/userdetail.asp?username=zhangsan AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtype=0x55),1,1)),0)>65— 如果我们分解一下,会看出这个查询的结果实际上是一个是或否的回答,“这个表名的第一个字符是一个比65大的ASCII值吗?”先看最里面的查询: SELECT TOP 1 name from sysObjects WHERE xtype=0x55 这意味着:获取来自sysObjects(所有的表)列表最上面的一个名字,其xtype(对象类型)等于ASCII码0x55(大写的字母“U”),转换成用户(user)表。所以,基本而言,我们获取了用户在数据库中所创建的第一个表。为简单起见,假设这个表就是“users”: SUBSTRING(users),1,1 现在,我们创建了一个子串,它包含了表名users的首个字符。其值为“u”: ISNULL(ASCII(u),0)>65 在这里我们查看u的ASCII码值的结果是否大于65,确认表名以字母开头。如果答案是肯定的,查询就会被处理。否则,查询就不会被处理。 使用这种方法,我们可以对每个查询简单地增加数字,从而发现首个用户名的第一个字母。例如,假设我们在大于117时(>117)得到了一个否定的响应,我们知道第一个字母是字母“u”,因为“u”的ASCII值是117。在发现这一点之后,我们可以简单地改变SUBSTRING参数来选择第二个字母,然后是第三个字母,等等。 最后,在没有错误代码时,我们借助于盲目注入就可以发现有漏洞的Web应用程序的数据库的完整的表结构。 本文出自:亿恩科技【www.enkj.com】 |