SQL相关专科毕业论文范文 与SQL盲注攻击和防范类专科毕业论文范文

关于免费SQL论文范文在这里免费下载与阅读,为您的SQL相关论文写作提供资料。

SQL盲注攻击和防范

摘 要:分析DVWA 中存在SQL 盲注漏洞的源码,旨在能够通过对现有攻击方式的验证下,提出对应的防御措施,为开发人员提供参考.采用基于时间的盲注方法,并借助python 脚本对存在漏洞的页面进行了仿真测试,成功利用该漏洞显示出数据库版本信息.现阶段对于存在数据库操作的代码,应重视其安全性,针对安全和开发的平衡,经过相应的需求分析后,采取对应的防御措施.

关键词:SQL 注入攻击;SQL 盲注攻击;数据库;防御

中图分类号:TP391.4 文献标志码:A 文章编号:1008-1739(2018)05-68-4

Blind SQL Injection Attack and Defense

LI Honghu, WANG Zhe, ZHAI Ji

(College of Computer Science and Technology, Harbin University of Science and Technology, Harbin Heilongjiang 150000, China)This paper analyzes the source code with blind SQL injection vulnerabilities in DVWA, and proposes the correspondingdefense measures validated in the existing attack modes to provide references for developers. A time-based blind injection method isused to simulate the vulnerability pages by the aid of a python script, and the database version information is displayed succesully. Atthe present stage, for database operation code, developers should pay attention to its security, and for security and development

balance, take corresponding defense measures based on corresponding requirement analysis.

SQL injection attack; Blind SQL injection attack; database; defense

0 引言

Web 发展的每一个阶段都肩负着不同的使命,应对着不同的挑战.Web1.0 时代主要注重的是内容的展示,在安全方面的挑战也仅仅是如何做好防止Webshell 的上传工作.随着Web 技术的发展与成熟,安全问题也成为其所要面对的巨大挑战之一[1],SQL 注入攻击对于Web 应用而言,无论是从其攻击的深度还是广度来看,都是一种危害性极大的攻击方式.

SQL 注入攻击通过提交特殊值与数据库进行非法交互,当代码不够健壮的时候,攻击者可以通过相应的SQL 语句,任意对数据库内容进行增删改查,如果服务器权限设置不合理,就可以直接读取主机文件.本文通过源码分析和运用python 脚本,阐述了SQL 盲注注入[2]攻击原理、详细操作和防范方法.

1 SQL 盲注原理

对于上一个代码段来看,第二段代码中多了一个@ 符号,这个符号的作用是将作用的php 代码产生的错误信息忽略掉,也就是说即使出现了错误,也不把错误信息显示出来,从而无法获取到服务器的错误信息,增加了攻击的难度.

2 SQL 盲注注入流程

2.1 基于逻辑的判断

通过闭合参数边界和添加逻辑判断,查看页面是否正常显示.

① 在User ID 处输入1’and1等于2--;

② 在User ID 处输入1’and1等于1--.

如果2 次页面返回结果不相同,则可能存在SQL 注入漏洞.

2.2 基于时间的判断

基于时间的判断是通过提交包含数据库时延函数的代码,让数据库在指定时间后返回结果,通过观察前端页面的加载速度,来判断是否存在SQL 注入.

在User ID 处提交1’and (select*from(select (sleep(20)))a)--,提交后如果页面返回出现20 s 左右延迟,则说明可能存在SQL 注入漏洞,需进一步进行测试.

3 基于时间的SQL 盲注测试脚本编写

3.3 脚本分析

测试脚本只是简单地对SQL 盲注进行了简单的自动化测试,返回了数据库的版本信息.基于时间的脚本,主要是通过数据库的时延函数,使用like 关键字,对构造的payload 与查询信息进行对比,如果为真,则调用时延函数,数据库延迟相应的时间才会返回结果,进而导致服务器返回响应会出现时间延迟情况;如果不为真,则服务器响应会立即返回.通过服务器返回响应是否存在延迟现象,判断构造的payload 是否正确.

通过对查询内容的更改,可逐步获取相应的内容,如把version()部分换成user(),可查询到当前数据库的用户信息.如果需要测试具体内容,请更改cookies 值和SQL 检测语句,可以得到具体的表和字段信息.

4 SQL 盲注防范

4.1 WAF 防火墙

Web 应用防护系统[3(] Web Application Firewall,WAF)工作在应用层,对来自Web 应用程序客户端的各种请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断.WAF 的实现通常由配置、协议解析、规则、动作和错误处理5 个模块组成.通过提供代理服务、特征识别、算法识别及模式匹配等方式来进行Web 防护.

4.2 参数化查询

在使用参数化查询[4]的情况下,数据库在完成对SQL 指令的预编译后,才会传入参数值,因此就算参数中含有恶意的指令,因为语法分析和预编译已经完成,所以客户端提交的参数内容不会被视为SQL 指令的一部分,通过该方式可有效地防御SQL 注入.经验证,对由客户端提交的id 值进行了参数化处理的情况下,SQL 注入攻击无效.

4.3 对重要信息进行加密

尽管SQL 注入防御技术在逐步地发展,且已经有成熟的防范措施,对于程序员参差不齐的编程能力,难免Web 应用程序可能存在SQL 注入漏洞.针对这种情况,可以对数据库中重要的信息内容进行加密,可采用DES﹑RSA、AES 及MD5等加密算法,进行数据的加密,即使Web 应用程序存在SQL注入问题,攻击者在获取数据库内容的前提下,也无法猜解其相应的明文内容.

4.4 对提交参数进行检查

SQL 注入发生的主要原因是程序编写者对于用户的输入没有进行验证,未曾考虑其Web 程序安全性问题,可以通过设置前端显示所在字段的长度属性,限制用户的输入长度,也可在后端对用户的输入参数中的敏感字符[5]进行转义或者过滤,对于已经确定参数类型的输入参数,可限制其输入的类型,如输入参数为整型,则当用户输入参数为非整型的时候,不允许用户访问.用户的输入验证,可在一定程度上减少SQL注入攻击的发生,但存在一定的局限性,可能存在规则被绕过的可能性.

4.5 屏蔽错误信息

SQL 注入攻击可利用服务端回显的错误信息,再结合数据库相应的报错特点,通过报错型注入方式,获取数据库相应内容,若数据库权限设置不当,当服务端报错返回其绝对路径后,可通过相应的SQL 语句,将一句话写入到网站所在服务器,这样会导致其服务器彻底沦陷.通过屏蔽其页面和数据库报错信息,可以从一定程度上杜绝攻击者通过错误回显来进行SQL 注入,但不能从根本上防止SQL 注入发生.

5 结束语

SQL 注入是目前针对于数据库攻击的主要方式,该方式通过恶意构造SQL 语句,并嵌入到相应的注入点,通过该方式来获取相应的数据库数据,大多数的存在SQL 注入的Web应用程序,主要是程序员对传入参数进行了动态的拼接,导致攻击者可以构造其想要执行的SQL 语句,进而发生数据泄露问题.本文通过讲述SQL 盲注原理、攻击方式、注入流程和相应python 脚本的编写,提出相应的SQL 注入防御策略,为SQL 注入攻击的安全防护工作提供有效的解决思路.

SQL论文范文结:

关于SQL方面的的相关大学硕士和相关本科毕业论文以及相关SQL论文开题报告范文和职称论文写作参考文献资料下载。

相关参考论文写作资料

热门SQL论文题目