• SQL注入小结


    一、SQL注入的概述

    定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

    (1)SQL注入威胁表现形式可以体现为以下几点:

            ●绕过认证,获得非法权限

            ●猜解后台数据库全部的信息

            ●注入可以借助数据库的存储过程进行提权等操作

    (2)SQL注入攻击的典型手段

            ●判断应用程序是否存在注入漏洞

            ●收集信息、并判断数据库类型

            ●根据注入参数类型,重构SQL语句的原貌

            ●猜解表名、字段名

            ●获取账户信息、攻击web或为下一步攻击做准备

    二、SQL注入的判断方法

            ①http://www.heetian.com/showtail.asp?id=40'

            ②http://www.heetian.com/showtail.asp?id=40 and 1=1

            ③http://www.heetian.com/showtail.asp?id=40 and 1=2

            如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。

            如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。

    三、常见的sql注入产生原因

    基于此,SQL注入的产生原因通常表现在以下几方面:

    ①转义字符处理不合适;

    ②不安全的数据库配置;

    ③不合理的查询集处理;

    ④不当的错误处理;

    ⑤多个提交处理不当。

    详细解释:

    (1)不当的处理类型

    Sql数据库将单引号字符(’)解析成代码与数据间的分界线:单引号外面的内容军事需要运行的代码,而用单引号引起来的内容均是数据。因为只需要简单的在URL或WEB页面的字段中输入一个单引号,就能很快速的识别出web站点是否会受到sql注入攻击。

    四、SQL注入攻击的简单示例:

    这里我们举一个比较常见的例子来简要说明一下sql注入的原理。

    假如我们有一个users表,里面有两个字段username和password。在我们的java代码中我们初学者都习惯用sql拼接的方式进行用户验证。比如:

    "select id from users where username = '"+username +"' and password = '"  + password +"'" 

    这里的username和password都是我们存取从web表单获得的数据。下面我们来看一下一种简单的注入:

    如果我们在表单中username的输入框中输入 ' or 1=1--  ,password的表单中随便输入一些东西,假如这里输入123。此时我们所要执行的sql语句就变成了:

    select id from users where username = '' or 1=1--  and password = '123'

    我们来看一下这个sql,因为1=1是true,后面 and password = '123'被注释掉了。所以这里完全跳过了sql验证

    六、注入原理

     SQL注入式攻击的主要形式有两种。

    一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。上面笔者举的例子就是采用了这种方法。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。

    二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记 “--” 来终止注入的字符串。执行时,系统会认为此后语句为注释,故后续的文本将被忽略,不被编译与执行。

    SQL注入很复杂,本文知识简单浅薄了解一下,有想深入理解的,可查看本文末参考博客,在此对引用文章,原博博主表示深深感谢。

    参考及致谢:

    1.sql注入攻击详解(原理理解)

    2.SQL注入攻击原理以及基本方法(本文中引用图来源)

    3.SQL注入原理及产生过程

    4.小试牛刀:SQL 注入攻击(这一篇虽然没有引用,但是很好,属于实操性的,手把手带图领着你一步一步实现注入)

    Over......

  • 相关阅读:
    H264关于RTP协议的实现
    RTSP交互命令简介及过程参数描述
    RTSP协议详解
    TCP 协议中MSS的理解
    RTSP 协议分析
    Linux下/etc/resolv.conf 配置DNS客户
    371. Sum of Two Integers
    python StringIO
    高效的两段式循环缓冲区──BipBuffer
    JavaScript Lib Interface (JavaScript系统定义的接口一览表)
  • 原文地址:https://www.cnblogs.com/gjmhome/p/14412018.html
Copyright © 2020-2023  润新知