zoukankan      html  css  js  c++  java
  • SQL 注入详解 SQL 注入详解

    SQL 注入原理

    SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统

    SQL 注入分类
    1. 数字型注入
    当输入的参数为整型时,则有可能存在数字型注入漏洞。

    假设存在一条 URL 为:HTTP://www.aaa.com/test.php?id=1
    可以对后台的 SQL 语句猜测为:
    SELECT * FROM table WHERE id=1

    判断数字型漏洞的 SQL 注入点
    ① 先在输入框中输入一个单引号 '
    这样的 SQL 语句就会变为:
    SELECT * FROM table WHERE id=1',
    不符合语法,所以该语句肯定会出错,导致脚本程序无法从数据库获取数据,从而使原来的页面出现异常。

    ② 在输入框中输入 and 1 = 1
    SQL语句变为:
    SELECT * FROM table WHERE id=1 and 1 = 1
    语句正确,执行正常,返回的数据与原始请求无任何差异。

    ③ 在数据库中输入 and 1 = 2
    SQL 语句变为:
    SELECT * FROM table WHERE id=1 and 1 = 2
    虽然语法正确,语句执行正常,但是逻辑错误,因为 1 = 2 为永假,所以返回数据与原始请求有差异。

    如果以上三个步骤全部满足,则程序就可能存在数字型 SQL 注入漏洞

    2. 字符型注入
    当输入参数为字符串时,则可能存在字符型注入漏洞。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符型一般需要使用单引号来闭合

    字符型注入最关键的是如何闭合 SQL 语句以及注释多余的代码

    假设后台的 SQL 语句如下:
    SELECT * FROM table WHERE username = 'admin'

    判断字符型漏洞的 SQL 注入点:
    ① 还是先输入单引号 admin' 来测试
    这样的 SQL 语句就会变为:
    SELECT * FROM table WHERE username = 'admin''。
    页面异常。

    ② 输入:admin' and 1 = 1 --
    注意:在 admin 后有一个单引号 ',用于字符串闭合,最后还有一个注释符 --(两条杠后面还有一个空格!!!)。
    SQL 语句变为:
    SELECT * FROM table WHERE username = 'admin' and 1 = 1 --
    页面显示正确。

    ③ 输入:admin' and 1 = 2 --
    SQL 语句变为:
    SELECT * FROM table WHERE username = 'admin' and 1 = 2 --
    页面错误。

    满足上面三个步骤则有可能存在字符型 SQL 注入。

    3. 其他类型
    其它类型比如Cookie 注入、POST 注入、延时注入等。

    POST注入:注入字段在 POST 数据中
    Cookie注入:注入字段在 Cookie 数据中
    延时注入:使用数据库延时特性注入
    搜索注入:注入处为搜索的地方
    base64注入:注入字符串需要经过 base64 加密


    参考:https://blog.csdn.net/weixin_43915762/article/details/87909751

  • 相关阅读:
    shell脚本执行错误:#!/bin/bash: No such file or directory
    odoo 主题中怎么添加多个代码块 (snippets)
    怎么使用 python 的 jieba 中文分词模块从百万数据中找到用户搜索最多的关键字
    odoo 网站上线后,怎么修改网站主题?
    阿里菜鸟网络春招 【部门直推】【22届校招实习】
    java jfreechart 折线图数据量大,X 轴刻度密密麻麻显示不下,或者省略号的解决办法
    java jfreechart 时序图横坐标显示,设置步数初始坐标不展示问题解决
    springboot2 整合 redis 并通过 aop 实现自定义注解
    java 线程池 Executors,ExecutorService
    git免密码clone push,多个git账号配置
  • 原文地址:https://www.cnblogs.com/cy0628/p/14951129.html
Copyright © 2011-2022 走看看