采用二进制代码的SQL注入攻击

--更新 01/03 02:12AM--
发现代码中并无出奇, 只是将几年前的冷饭再炒.因为多年过去了, 可能有人疏忽, 多试一些总有人中招的.
注入方式中数字字段是最容易进入的. 文本也可以, 但在QUERYSTRING中提交文本的情况不如数字多.
最常见的就是形如 news.asp?id=3
在ASP中,疏忽的写法为
aspID=request("id")
SQL="SELECT * FROM NEWS WHERE ID=" & aspID
SET RS=Conn.EXEC(SQL)
这里的ID完全没有保护, 如果ID是一个字符串, 很容易就注入了
例如ID=3;delete%20from%20news;
直接删除NEWS表记录
对于文本来说, 例如news.asp?keyword=abc
aspKeyword=request("keyword")
SQL="SELECT * FROM NEWS WHERE TITLE LIKE '%" &aspKeyword& "%'
注入时就用在KEYWORD里用单引号封住, 最后再写一句假的SQL来骗原代码.
例如 keyword=abc';delete from news;select * from sysobject where SOMETHING LIKE '%
相比ID当然就麻烦的多.
 
下面的内容中的一大堆代码, 其实是为了避开防注入程序中限制的一些关键字.
看了几个防注入程序, 一般是通过过滤的方法, 例如
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|daxia123|<script|/script>"
SQL_inj = split(SQL_Injdata,"|")
如果使用了下文的二进制, 还有大小混写, 是可以绕过上面的程序的.
所以还是要对来源是QUERYSTRING还是FORM,是数字还是文本作严格的判断
对于要求是数字的,可以用ISNUMERIC()函数检查,如果非数字直接拒绝
对于文本,检查是否包含单引号, 有的话一率用两个单引号代替, 在ASP中,两个单引号的前一个用作了转义.

刚看到下面的那些文章里的一堆代码真被唬了一下, 实际分析还是以前的原理, 所以阻拦方法也没有变.

--以下内容分别出自--

http://bbs.360safe.com/viewthread.php?tid=606369
http://blog.csdn.net/songz210/archive/2009/01/01/3663861.aspx
http://bbs.ikaka.com/showtopic-8580913-5.aspx


注入攻击拦截的源码:

dEcLaRe%20@S%20VaRcHaR(4000)%20SeT%20@s=cAsT(0x4445434C415245204

  • 0
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值