找了一些sql注入攻击的方法,测试了我们的网站,攻击不成功。
ASP可运行的服务器端平台包括:WinNT、Win2k、WinXP和Win2003,在Win98系统里装上PWS4.0也可运行。
现在很流行的注入攻击,就是利用提交特殊地址将ASP中引用的正常SQL语句和入侵者所需要的SQL语句一并执行,使入侵者达到入侵的目的。随着有一些脚本注入工具发布,使菜鸟也可以轻松完成对ASP的注入攻击。那么我们来了解一下这些工具是怎样注入的。
首先,入侵者会对一个网站确定可不可以进行注入,假设一篇新闻(文章)的地址为:http://www.xxxx.com/news.asp?id=1 一般会以提交两个地址来测试,如:
http://www.xxxx.com/news.asp?id=1 and 1=1
http://www.xxxx.com/news.asp?id=1 and 1=2
第一个地址后面加了and 1=1,构成的SQL语句也就变为了:Select * from 表单名 where id=1 and 1=1这句话要成立必须and前后语句都成立。那么前面的文章地址是可以访问的,后面的1=1也是客观成立的,那么第一个地址就可以正常显示;相反1=2是显然不成立的,关键就看这步了,如果提交and 1=2页面还是正常显示说明他并没有将and 1=2写入SQL语句,此站也就不存在注入漏洞;但如果提交and 1=2之后返回了错误页面则说明此站点将后面的语句带入了SQL语句并执行了,也就说明他可以进行SQL注入。(注:如果地址后面跟的是news.asp?id='1'就得变为news.asp?id=1' and '1'='1来补全引号了)
现在知道了可以注入后,入侵者可以做什么呢?如果提交这样的地址:
http://www.xxxx.com/news.asp?id=1 and exists (select * from 表名 where 列名=数据)根据返回的正确或错误页面来判断猜的表名和列名是否正确,具体实现时是先猜表名再猜列名。当猜出表名和列名之后还可以用ASC和MID函数来猜出各列的数据。MID函数的格式为:mid(变量名,第几个字符开始读取,读取几个字符),比如:mid(pwd,1,2)就可以从变量pwd中的第一位开始读取两位的字符。ASC函数的格式为:ASC("字符串"),如:asc("a")就可以读出字母a的ASCII码了。那么实际应用的时候就可以写为:asc(mid(pwd,1,1))这样读取的就是pwd列的第一个字符的ASCII码,提交: asc(mid(pwd,1,1))>97以返回的页面是否为正确页面来判断pwd列的第一个字符的ASCII码是否大于97(a的ASCII码),如果正确就再试是否小于122(z的ASCII码)……这样慢慢缩小字符的ASCII码的范围,直到猜到真实的ASCII码。这样一位一位的猜就可以得到数据库中的用户名和密码。还有一种ASP验证缺陷——就是用户名和密码都输'or '1'='1,构造SQL语句Select * form 表单名 where username='' or '1'='1' and pwd='' or '1'='1'就可以达到绕过密码验证的目的。
未经允许不得转载:445IT之家 » asp的sql注入攻击的方法