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

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注入语句是否正确。

1272815-20180520205321220-2118480446.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

借百度爸爸下蛋的好看搜索框

学习vue时写的一个小demo 虽然实现很简单,但还是推介看看,没什么难点,而且有些东西你可能会用到!在线演示demo源码

数据库关系

第1层:高并发、高速查询 memory cached(内存高速缓存数据库)第2层:持久化保存 redis第3层:数据保存1、sql server,mysql,sqlite等关系型数据库2、mongo db 在很大程度上,redis可以替代mongo db(持久化、文件保存&#…

web.config详解

<?xml version"1.0"?><!--注意: 除了手动编辑此文件以外&#xff0c;您还可以使用 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。设置和注释的完整列表在 machine.config.comments 中&#xff0c;该…

华为智能手表与鸿蒙,不再是大号手环!华为鸿蒙手表来了:要和苹果抢生态?...

5 月 27 日上午&#xff0c;华为终端官方微博官宣&#xff0c;WATCH 3 腕上智慧&#xff0c;一表万象&#xff0c;旗舰归来&#xff0c;将于 6 月 2 日晚 20:00 与 HarmonyOS、MatePad Pro 2 等产品一同发布。依靠手环的超高销量&#xff0c;华为、小米等企业发力&#xff0c;在…

页面重构-让我们的布局自适应

css重构之旅 >前言&#xff1a; 今年我大一,马上就要大二了。从高三毕业暑假到大学的这一年马上过去&#xff0c;马上迎来大二生活.学习前端也有将近一年了。一昧去追求那些视觉的效果和相对高端和新颖的技术&#xff0c;反而忽略了最基础的布局技巧。 回味 2017年3月&am…

重新同步多线程集成测试

我最近在Captain Debug的Blog上偶然发现了一篇文章“ 同步多线程集成测试 ”。 该文章强调了设计涉及被测类以异步方式运行业务逻辑的集成测试的问题。 给出了这个人为的示例&#xff08;我删除了一些评论&#xff09;&#xff1a; public class ThreadWrapper {public void d…

[转] 分享一个快的飞起的maven的settings.xml文件

<?xml version"1.0"?> <settings> <localRepository>/home/yizhen/.m2/repository</localRepository><!--需要改成自己的maven的本地仓库地址--> <mirrors> <mirror> <id>alimaven</id> <name&g…

鸿蒙文化博物馆,有趣、有味、有文化!“周末儿童博物馆”在成博欢乐启幕

昨晚&#xff0c;成都博物馆“周末儿童博物馆”儿童节特别活动“六一欢乐会”拉开帷幕&#xff0c;丰富多彩的各种活动及精彩表演吸引了大批小朋友走进博物馆&#xff0c;提前度过了一个有趣、有味、有文化的“六一”国际儿童节。根据常设展“人与自然&#xff1a;贝林捐赠展”…

C8-2 圆的周长和面积 (100/100 分数)

题目描述 求圆的周长和面积&#xff0c;已知圆类从shape抽象类继承。 要求使用c class编写程序。可以创建如下class #include <iostream>using namespace std;const double pi 3.14;class Shape{public: Shape(){} ~Shape(){} virtual double getArea() 0; …

“前”方有坑,绕道而行(一)-- H5 CSS

1. 关于 数字、英文 不换行问题&#xff1b; 情景&#xff1a;昨天测试 小程序&#xff0c;输入英文&#xff0c;没有换行&#xff0c;且 下方有横向滚动条&#xff1b; 解决&#xff1a;word-break&#xff1b;  word-break:break-all; /*只对英文起作用&#xff0c;以字母…

Spring MVC:表单处理卷。 3 –复选框处理

我已经发布了有关使用Spring MVC标签库处理checkbox标签的帖子。 现在&#xff0c;我要开发此主题并继续使用“复选框”标签。 它并不难&#xff0c;但是在某些情况下&#xff0c;您最好使用它。 在本文中&#xff0c;我将结合java.util.List和java.util.Map提供Springcheckbox…

SSM框架中常用的配置文件

学习框架&#xff0c;刚开始的时候最烦的就是一些配置文件&#xff0c;有很多需要配置的东西&#xff0c;今天把这些配置文件信息稍微整理一下&#xff0c;以后说不定会用的到。 web.xml文件 <?xml version"1.0" encoding"UTF-8"?> <web-app xm…

html 消息通知声音,ajax实现web页面的消息实时提醒时播放提示音

在应用系统的开发过程中&#xff0c;经常要使用到新消息的提醒功能&#xff0c;比如说后台有一个告警消息&#xff0c;web页面就会实时的收到这个告警的消息&#xff0c;且发出提示音。这其实就是涉及到两个方面的知识&#xff0c;一个是http实时消息的推送&#xff0c;在这儿我…

元素的居中方式总结

最近有点空闲时间&#xff0c;所以想好好看看几个一直没机会看的问题。把它写下来&#xff0c;是促进自己更好地理解&#xff0c;同时也是一个备忘吧&#xff01; 先说元素居中&#xff0c;元素居中&#xff0c;从最开始接触前端就一直挥之不去的一个问题&#xff0c;也许是太…

Man方法

Main方法相当一个主线程&#xff0c;JVM会自动寻找class文件中的main方法并执行(请思考tomcat加载java web项目启动的线程数和每次tomcat服务器接收到请求&#xff0c;是不是要发起一个线程去处理) 以下的例子展现了Main主线程中启动了两个分支线程&#xff08;mTh1和mTh2) pac…

八、网络服务集群

概述 neutron-server 接收和路由API请求到合适的OpenStack网络插件&#xff0c;以达到预想的目的。 5.1、控制节点安装 5.1.1、先决条件 在你配置OpenStack网络&#xff08;neutron&#xff09;服务之前&#xff0c;你必须为其创建一个数据库&#xff0c;服务凭证和API端点。 1…

JArchitect对Java开源贡献者免费

JArchitect是用于Java代码库的静态分析工具&#xff0c;它提供交互式GUI和HTML报告&#xff0c;用于查找代码中过于复杂或有问题的区域&#xff0c;执行分析以重构并比较随时间的变化。 在版本3中&#xff0c;添加了类似LINQ的查询语言&#xff0c;该工具使该工具成为功能极其强…

android让一个控件跟上面控件对其,学个明白--Android控件架构

Android控件架构1.什么是View&#xff1f;View是Android中所有控件的基类。View是界面层的控件的一种抽象&#xff0c;它代表了一个控件。在Android中每个控件都会在界面中占得一块矩形的区域。在Android中控件被分为两类&#xff1a;View和ViewGroup。ViewGroup控件作为父控件…

分享一个自制的计算子网划分的小工具

使用 javascirpt 写的&#xff0c;因此可以使用浏览器浏览即可 code: <meta charset"utf-8">输入划分网段的数量&#xff1a; <input id"inp_netCount" /> <input type"button" οnclick"createElem()" value"sta…

每个Java开发人员应拥有的持久断点

当开发人员使用Java进行工作时&#xff0c;即使您尝试调试其他内容&#xff0c;也总是会遇到一些失败的情况。 这是应该在每个IDE中启用的持久断点的列表。 &#xff08;恕我直言&#xff09; 是的&#xff0c;从理论上讲&#xff0c;您应该能够从良好的日志记录实现中获得此信…