• SQL注入基础知识及绕过方式


    介绍

    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。(来自百度百科)

    分类

    按照提交方式分类

    GET型注入、POST型注入、cookie注入、http头注入

    按照注入类型分类

    数字型注入、字符型注入、搜索型注入

    按照执行效果分类

    布尔盲注、时间盲注、报错注入、联合查询注入、堆叠注入、宽字节注入、base64注入

    SQL注入常用函数

    database():数据库名

    desc():结构

    @@datadir:路径

    table():表名

    columns():列名

    limit():返回结果中的前几条数据或者中间的数据

    group_concat():分组拼接函数

    rand():返回0~1的随机数

    floor():向下取整

    substr():截取字符串

    ascii():返回字符串的ascii码

    寻找SQL注入

    SQL注入可以出现在任何从系统或用户接收数据输入的前端应用程序中,这些应用程序之后被用于访问数据库服务器。

    如果对一个网站进行SQL注入攻击,首先就需要找到存在SQL注入漏洞的地方,也就是寻找所谓的注入点。可能的SQL注入点一般存在于登陆页面、查找页面或添加页面等用户可以查找或修改数据的地方,简单来说,页面与数据库交互的地方可能会存在SQL注入。

    最常用的寻找SQL注入点的方法,是在网站中寻找如下形式的页面链接

    http://www.123.com/xxx.php?id=xx

    其中‘xx’可能是数字,也可能是字符串,分别被称为整数型数据或者字符型数据

    SQL注入流程

    1、判断是否存在注入、注入类型

    2、猜解字段数

    3、确定显示位

    4、获取库名

    5、获取库中的表名

    6、获取表中的字段名

    7、下载数据

    SQL注入绕过方式

    1、绕过空格

    寻找可以代替空格执行的特殊字符,比如:+,%20,/**/,%a0等

    2、十六进制绕过

    查询条件为用户名等于admin的信息,admin需要使用引号引起来,如果过滤到引号,where语句就会执行失败。

    可以将amdin替换成十六进制来执行

    3、大小写/复写

    复写就是写两个,过滤掉一个后,确保还会留下来一个可以使用。

    4、内联注释

    把一些特有的仅在MYSQL上的语句放在 /*!...*/ 中,这样这些语句如果在其它数据库中是不会被执行,但在MYSQL中会执行。

    5、过滤or  and  xor  not 绕过

    and = &&

    or = ||

    xor = | # 异或

    not = !

    6、过滤等号

    %like% 通配符

    <> 等价于 !=

    在前面在加一个!表示等于

    未完待续~~~

    SQL注入防御方式

    预编译防止SQL注入(参数化查询)

    也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的 语法结构了,因为语法分析已经完成了,而语法分析主要是分析sql命令,比如 select ,from ,where ,and, or ,order by 等等。所以即使你后面输入了这些sql命令,也不会被当成sql命令来执行了,因为这些sql命令的执行, 必须先的通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数。所以sql语句预编译可以防御sql注入。

  • 相关阅读:
    漫谈递归转非递归
    (转)程序猿面试需要的知识点总结
    LeetCode:4_Median of Two Sorted Arrays | 求两个排序数组的中位数 | Hard
    LeetCode: 3_Longest Substring Without Repeating Characters | 求没有重复字符的最长子串的长度 | Medium
    LeetCode: 221_Maximal Square | 二维0-1矩阵中计算包含1的最大正方形的面积 | Medium
    LeetCode: 2_Add Two Numbers | 两个链表中的元素相加 | Medium
    算法导论第十五章 动态规划
    AVL树探秘
    算法导论第十四章 数据结构的扩张
    算法导论第十三章 红黑树
  • 原文地址:https://www.cnblogs.com/wszgg/p/14144506.html
Copyright © 2020-2023  润新知