1. SQL语言
结构化查询语言(Structured Query Language)简称SQL:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

2. SQL注入
SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。
SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术。通过把SQL命令插入到Web表单提交框、输入域名框或页面请求框中,最终欺骗服务器执行恶意的SQL命令。

3. SQL注入危害

  • 非法读取、篡改、添加、删除数据库中的数据。
  • 盗取用户的各类敏感信息,获取利益。
  • 通过修改数据库来修改网页上的内容。
  • 私自添加或删除账号。
  • 注入木马等等。

4. SQL注入攻击的过程及原理
SQL注入攻击是指攻击者通过在应用程序后台数据库的操作中插入一些恶意SQL语句来达到操作数据库数据的目的。具体来讲就是,SQL注入攻击是攻击者利用Web应用程序,通过输入非法字符,来构造恶意的SQL语句,最终将恶意的SQL语句注入到应用的后台数据库服务器中。数据库服务器执行这些恶意SQL语句后,不会按照数据库数据表设计者的意图去执行某些操作,而是进行一些非法的操作,进而造成数据库数据的丢失,损坏等后果。这种注入攻击方式困扰着众多Web应用。

**5. SQL注入攻击的手段

  • 没有正确过滤转义字符
    应用系统的使用者输入内容,在没有经过前端验证,字符串过滤的情况下,就会发生SQL注入攻击。非法的输入传递给后台的SQL语句,SQL语句最终在数据库中执行非法的操作。

  • Incorrect type handling
    由于Web应用使用者所输入的参数,在传递过程中并不是强类型,也没有实施必要的类型转换,那么就会发生Incorrect type handling这种情况。比如,应用编码者对用户输入的内容并没有进行合法性检验,原本应该输入数字,但是编码者并未进行类型检验。

  • 数据库自身的漏洞
    某些数据库由于自身设计以及实现的漏洞,就会导致攻击者利用这些漏洞对数据库服务器进行攻击。SQLsever有些漏洞会导致攻击者能够越过访问权限,执行越权的操作,这样对数据库的危害也是极大的。因此应该及时修补数据库漏洞。

  • 盲目SQL注入式攻击
    如果应用系统对于承受的SQL注入攻击没有察觉,没有对攻击者进行有效的防范,就会发生盲目的SQL注入攻击。存在SQL注入攻击点的网页可能不会给攻击者展示有用的信息,它会根据注入攻击者注入到合法语句中的不同逻辑,进而显示不同的网页内容,这种攻击手段非常的耗费精力,需要攻击者不断的精心构造注入语句,一旦发现注入点和注入目标就可以很顺利的获取想要的信息。

  • 条件响应
    目前这种SQL注入攻击方式能够在应用程序的网页中进行逻辑计算。

  • 条件性差错
    通过构造逻辑错误来判断应用程序是否具有注入点。总结归纳出该应用所使用的数据库的类型,数据库中包含的一些数据表名,字段名等,这样就可以为接下来注入点的寻找提供帮助。

  • 时间延误
    通过构造SQL注入语句,使得数据库判断逻辑时间变长,通过判断应用页面的加载时间来判断构造的SQL注入语句是否正确。

6. 攻击的过程主要分为如下步骤
(1)通过多次输入不同的内容来测试当前的应用系统是否可以进行SQL注入,如果可以,那么进行第二步,如果不可以,则放弃。
(2)通过不断的输入测试数据,进而寻找SQL注入攻击点,找到SQL注入攻击点后,接下来就要寻找网站中可以被利用的SQL注入的漏洞。在这里,我们可以通过输入一些特殊字符,语句来寻找漏洞,同时我们也可以根据浏览器的返回的数据库信息,进而可以判断该Web应用所使用的数据库的类型。接下来,我们就可以构造数据库的查询语句,从而找寻注入点。
(3)暴力猜解数据库中存储的一些用户名和密码,一般情况下,服务器的数据库数据表中存放的表名、字段名,字段类型等信息都是有一定规律的。可以通过构建特殊数据库语句,这样可以在数据库通过查询语句来获得用户的表名、字段名、用户名和密码的长度以及内容,网络上存在着大量的SQL自动化注入工具,这个暴力猜解的过程可以通过这些工具来快速的实现。
(4)可以着手寻找Web应用管理后台的入口。通常情况下,Web后台管理的界面肯定是不会对于普通用户进行开放的,因此后台管理界面的路径是未知的。不过可以利用网上的一些路径扫描工具来寻找后台真正的登陆路径。这些路径其实是有规律可循的,经过不断的尝试就可以找到真正的管理后台入口的地址。
(5)此时可以进行系统入侵和破坏了。因为刚刚得到了用户表的用户名和密码,这样一来,就能够获取到管理员的用户名和密码,从而拥有了管理员权限,登录管理员账号,进入应用的管理后台,随后就可以进行篡改网页、上传木马、修改、泄漏用户信息等一系列的破坏行为,并进一步入侵数据库服务器。

7. 针对SQL注入攻击的检测方法
作为排在威胁Web应用安全十大攻击手段之首的SQL注入攻击,在安全产业界和学术界有着很多的深入研究。在传统的安全产业界主要检测和识别SQL注入攻击有如下两种技术:一种是基于特征的关键字匹配技术;另一种是基于异常检测技术。

  • 基于特征的关键字匹配技术:它包含许多关键字匹配算法,一个好的匹配算法是这项技术好坏的评价标准之一,目前主要使用的检测技术就是基于特征的关键字匹配技术,这种技术的核心思想是在SQL语句中抽取出特殊字符(例如#等),提取数据库的关键字(例如:select、union等)。通过提取出来的特殊字符来判断该SQL语句是否进行了SQL注入攻击。
  • 基于异常检测技术:它包含基于程序行为的异常检测技术,基于数据流的异常检测技术和基于聚类的异常检测技术等手段,这种检测技术被业界分为学习期与检测期。在学习期,检测系统必须拥有不受影响的网络系统,必须针对需要检测的Web应用具有专业的学习机制,只有当检测系统经过不断的学习,进而学习成熟后,才能进入系统检期。在系统的检测期,检测系统利用其在学习期演变成的准确模型,对传递进系统来的用户输入数据进行系统地全面分析。尽

8. 针对SQL注入攻击的防御措施

  • 普通用户与系统管理员的权限要严格区分
  • 使用参数化的过滤性SQL语句
  • 需要加强对用户输入的验证
  • 使用数据库自带的安全参数
  • 避免出现一些详细的错误消息
  • 多层环境防治SQL注入式攻击
  • 使用专业的漏洞扫描工具
  • 对数据进行加密处理
  • 在Web应用程序开发过程的所有阶段实施代码的安全检查

转载于:https://www.cnblogs.com/jmjm/p/9064564.html

2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击相关推荐

  1. [渗透攻防] 一.从数据库原理学习网络攻防及防止SQL注入

    这是最近自己学习渗透和网站攻防的文章,希望能深入地学习这部分知识,同时认了Na师傅和Rong师傅,知道了人外有人.天外有天,真的很享受这种探索问题.解决问题和分析知识的过程.希望文章对你有所帮助,尤其 ...

  2. 2017-2018-2 20179216 《网络攻防与实践》第六周总结

    学习内容总结 第五章 TCP/IP网络协议攻击 1. 网络安全属性与攻击模式 网络安全是指网络系统的硬件.软件及其系统受到保护,不受偶然的或者恶意的原因而遭到破坏.更改.泄漏,系统连续可靠正常运行,网 ...

  3. 2017-2018-2 20179216 《网络攻防与实践》 第四周总结

    教材学习内容总结 网络嗅探 网络嗅探(sniff)是一种黑客常用的窃听技术,利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密通信等.实现网络嗅探的工具称为 ...

  4. 网络攻防实验之缓冲区溢出攻击

    这个实验是网络攻防课程实验中的一个,但是目前我还没有完全搞懂代码,以后有机会来补.也欢迎大佬指点 一.实验目的和要求 通过实验掌握缓冲区溢出的原理,通过使用缓冲区溢出攻击软件模拟入侵远程主机理解缓冲区 ...

  5. 网络攻防实验之模拟arp攻击

    因为我的电脑本机是连的网线,而虚拟机的网卡使用的是NAT模拟,所以虚拟机和本机就不在一个局域网里面的,就没法进行arp攻击,所以我就用两台虚拟机来进行arp攻击 (注意arp攻击是局域网攻击) arp ...

  6. 【网络安全面试题】—如何注入攻击Java Python PHP等主流语言

    4.5. 命令注入 4.5.1. 简介 命令注入通常因为指Web应用在服务器上拼接系统命令而造成的漏洞. 该类漏洞通常出现在调用外部程序完成一些功能的情景下.比如一些Web管理界面的配置主机名/IP/ ...

  7. 网络(14)-Web站点如何防范XSS、CSRF、SQL注入攻击?

    一.XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie ...

  8. 20159206《网络攻防实践》第五周学习总结

    20159206<网络攻防实践>第五周学习总结 教材学习内容总结 本周教材主要学习了第十一章和第十二章. 第十一章主要讲了WEB应用程序的安全攻防.首先介绍了WEB应用程序和WEB应用体系 ...

  9. 20179214 《网络攻防实践》第五周学习

    20179214 <网络攻防实践>第五周学习 web应用程序体系结构及其安全威胁 web应用程序体系结构 浏览器 标准的web客户端, Web服务器 通常被简单的描述为http守护程序,接 ...

最新文章

  1. Guava包学习--EventBus
  2. MyBatis-06 MyBatis XML方式之多个接口参数用法
  3. 深入理解JavaScript系列(3):全面解析Module模式
  4. 37.使用PreResultListener实现回调
  5. spring boot学习(5): 进程exit code自定义
  6. Docker小结(五)
  7. 最流行的 RESTful API 要怎么设计?
  8. Lean Startup实战
  9. 4G EPS 中的 PDN Connection
  10. 苹果CEO乔布斯脑子里怎么想的
  11. 打通网络营销的任督二脉
  12. MySQL数据库 --- 高级篇
  13. datastage java_datastage server job之java调用datastage job
  14. 快速傅里叶变换学习及C语言实现
  15. 内联js th:inline标签
  16. 超炫酷的3D效果电子书阅读器3DBook绿色版下载
  17. 关于 麒麟系统开发错误“fatal error: GL/gl.h: No such file or directory“ 的解决方法
  18. 智慧消防安全物联网解决方案
  19. MySQL表记录检索
  20. 第四章C语言程序设计实训教程(练习题)

热门文章

  1. 基于vue的UI框架集锦(移动端+pc端)
  2. 重装mysql出现无法start service的问题
  3. 架构之Nginx(负载均衡/反向代理)
  4. ContentProvider与ContentResolver使用
  5. 配置源码管理工具(2)
  6. windows下如何查看磁盘IO性能
  7. ubuntu中启动oracle数据库
  8. 我的世界末日之后无限法则服务器,《我的世界》全新玩法无限法则上线
  9. php详解递归,PHP递归算法详解
  10. mexw32与mexw64