1.1概述
1.3字符编码 【程序编程相关:Mysql 4.x】
1.2背景 【推荐阅读:被微软“深度隐藏”的文件 v2.0】
2.2测试过程 【扩展信息:OpenVPN中比较有用的一些脚本】
2.1综合测试
2.3分析结果
3.1绕过验证
3.2 select
3.2.1 直接利用 号3.2.2 基于union3.2.3 利用结构错误查询表单3.2.4 插入语句(圆扩号)3.2.5 利用like语句查询3.2.6 "死胡同"3.2.7 列的数目不匹配问题3.2.8 附加的where引号表与域的枚举3.2.10 单括号
3.3插入
3.4sql服务器存储过程利用
4.1数据处理
4.2安全的sql网页应用程序编写
5.1ms sql server
5.2ms access server
5.3 oracle
关于 spi dynamics,inc.一 概述与介绍
1.网络应用与sql注射
1.1概述
有些网络数据库没有过滤客户提供的数据中可能有害的字符,sql注射就是利用插入有害字符进行攻击的技术.尽管非常容易防范,但因特网上仍然有惊人数量的存储系统容易受到这种攻击.这篇文章的目的是指导专业安全组织了解这种技术,并告诉他们正确的,用来防范sql注射的办法,以及处理各种常见的,由于非法输入引起的问题.
1.2背景
在读这篇文章之前,你应该对数据库如何工作,以及sql如何被用来访问数据库有一些基础的了解.我建议您阅读extropia.com的文章“introduction to databases for webdevelopers”.(网址:http://www.extropia.com/tutorials/sql/toc.html)
1.3字符编码
在大多数的网络浏览器中,标点符号与许多其它符号在用于一个网络请求前需要把url编码,以便被适当地编译(interpret).在本文中的例子与截图中我使用了固定的ascii字符以保证最大的可读性.然而,在实际应用中,你需要在http请求中用%25来代替百分号(%),用%2b来代替加号(+)等等...
2.易损性的测试(testing for vulnerability)
2.1综合测试
彻底地检测一个网络请求是否容易被sql注射比一个可能的猜测(might guess)需要耗费更多的精力.当你把一个单引号放进一个脚本的第一个参数值时,服务器返回一个空白的网页,上面除了odbc错误以外什么都没有.显然这种情况直接反映出web程序存在漏洞,但通常都不是这样的,如果你没有注意细节的话,很容易忽略掉一个看上去完美,其实很脆弱的脚本.服务器上每一个脚本中的每一个参数都应该被检测.开发者与开发组织之间可能很不一致.设计脚本a的程序员也许与脚本b的开发毫无关系,所以,其中一个也许对sql注射免疫,而另外一个可能不会.事实上,设计脚本a里的函数a的程序员也许与脚本a里的函数b的开发毫无关系,所以脚本a里的一个参数也许对sql注射是脆弱的,而另外一个参数却不一定,即使整个网络请求是由一个程序员来构想,设计,编写及测试的,在成千上万的脚本中的参数中,由于某种原因,设计者忘了检验某个地方的数据,所以仍有可能存在一个脆弱的参数,而且那个地方是唯一的,你永远都不能确定是哪里,所以必须测试所有的东西.
2.2测试过程
... 下一页