SQL注入漏洞的判断_见微知著

  一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。

  为了全面了解动态网页回答的信息,首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。
  以下以HTTP://xxx.xxx.xxx/abc.asp?p=YY为例进行分析,YY可能是整型,也有可能是字符串。

  

1、整型参数的判断

  当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下

select * from 表名 where 字段=YY

所以可以用以下步骤测试SQL注入是否存在:

  ①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY‘

abc.asp运行异常;

  ②HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1

abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

  ③HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2

abc.asp运行异常;

  如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。

  

2、字符串型参数的判断

  当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段='YY'

所以可以用以下步骤测试SQL注入是否存在。

  ①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了  
select * from 表名 where 字段=YY’

abc.asp运行异常;

  ②HTTP://xxx.xxx.xxx/abc.asp?p=YY and '1'='1'

abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

  ③HTTP://xxx.xxx.xxx/abc.asp?p=YY and '1'='2'

abc.asp运行异常;

  如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。


3、特殊情况的处理
  有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。

  ①大小定混合法:

由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;

  ②UNICODE法:

在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B,空格=%20 等。

  ③ASCII码法:

可以把输入的部分或全部字符全部用ASCII码代替,如U=chr(85),a=chr(97)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值