SQL注入攻击防范策略研究+文献综述(3)
时间:2017-03-07 23:21 来源:毕业论文 作者:毕业论文 点击:次
常规注入和盲注有很多相似之处,都是利用一种代码错误使应用程序不加验证的从客户端接收数据并执行SQL查询命令。不同之处即常规注入是发送使服务器产生不合法SQL查询输入,盲注不依赖错误信息,而是攻击者比较不同参数值观察其是否返回相同的结果。盲注是通过暴力猜想的方式实现的,一般采用折半查找办法来提高猜想效率。 综上所述,如果在屏蔽错误信息的条件下,通过盲注方式即可对数据库方式进行检测。 3.SQL注入攻击深度剖析与检测 上一章介绍了SQL注入的语言基础、注入原理和基本流程等信息。本章将对SQL注入攻击实现的原理进行深入剖析,具体介绍获取数据库信息的原理,对SQL注入攻击的注入语句进行细致分析。 3.1 SQL注入的主要形式 SQL注入大多是攻击者通过正常的Web页面,把构造的特殊SQL代码提交到服务器端执行,进而达到攻击的目的。例如,在Web应用程序的登录信息验证中,一般会有用户名(UserNsme)和密码(UserPwd)两个字段,程序会通过用户输入域的用户名和密码来执行验证信息的操作。如果编程人员利用拼接的方法来构造SQL查询语句,如下所示(假定用户界面上有用户名和密码两个用户输入框): String sqlstr=”select*from UserMsg where UserName=”’+txtName.Text+”’and UserPwd=”’+txtPwd.Text+”’”;其原理是通过查找UserMsg表中的用户名和密码,当输入的用户名和密码和后台数据库中用户名和密码相一致时方可进行网站授权访问。但是,如果黑客在界面输入框中分别输入”whatever’or 1=1--“和”hapizhen”(不包含双引号),点击登录后,后台程序就会动态构造如下SQL语句: Select*from UserMsg where UserName=’whatever’or 1=1--‘and UserPwd=’hapizhen’ 上述SQL语句进行了两个条件的判断,中间有一个逻辑连接词or,只要两个条件的判断有一个成立就会登录成功。黑客们输入的“1=1”从逻辑上是恒为真的,后面的密码验证部分被SQL注释符号“--”注释掉了,因此,无论攻击者输入的用户名和密码是否与后台数据中的一致,都将顺利进入系统,获取操作权限。 假如在用户界面的输入框中输入:“’;Drop Table UserMsg--”(不包括双引号),那么上述的SQL语句就会变为:select*from UserMsg where UserName=”;Drop Table UserMsg--‘and UserPwd=’hapizhen’ 如果数据库中的用户表名被推断出来,就会导致“Drop Table UserMsg”命令执行,整个数据表就会流失。 通俗地说,SQL注入原理就是从客户端提交特殊的代码,进而收集到了程序及数据库服务器的信息,得到黑客想要的资料和数据。黑客一旦得到了操作权限,就可以在数据库中随意浏览信息并可以下载重要数据,严重的话可能会破坏整个数据库系统。 SQL注入攻击的一般流程图如图1所示。 图1 SQL注入的一般流程 3.2 基于特征语义的SQL注入检测 SQL注入检测过程并不像其他一般的方法那样直接提取规则进行匹配,而是通过所定义的语义模式特点对现有的SQL注入攻击类型进行分析,进而分层分析。首先,给出算法基本流程和思路分析;然后,给出算法中每一层检测的详细过程;最后,给出算法的形式化综述。 4.SQL注入扫描工具设计 本章节主要是在前面章节对SQL注入攻击技术理论分析和研究的基础上综合运用所学的多种专业技术知识,针对SQL注入问题,研究一款用于SQL注入漏洞扫描分析的工具。这款扫描工具主要有以下两个方面的功能:一是对SQL注入漏洞的扫描,通过多线程技术的使用加速网站页面的扫描;二是对网站进行测试性SQL注入攻击,通过暴力猜解和字典猜解技术,猜解数据库、表、用户基本信息等,从而发现问题所在。 (责任编辑:qin) |