zoukankan      html  css  js  c++  java
  • 十种MYSQL显错注入原理讲解(一)

     开篇我要说下,在《代码审计:企业级Web代码安全架构》这本书中讲十种MYSQL显错注入,讲的很清楚。

    感兴趣请去读完,若处于某种原因没读还想了解,那请继续往下。

    1、count,rand,floor

    select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);

    函数解释:

      count:是用来统计表中或数组中记录的一个函数。

      rand:调用可以在0和1之间产生一个随机数。

      floor:函数只返回整数部分,小数部分舍弃。

    原理详解:

      首先在select floor(rand(0)*2) 执行时候会返回固定的序列(表中内容10左右,你就能看出来了)。用的别人的截图,莫怪。

      所谓固定的序列就是返回的01101100....这串是固定的,这个要记牢,后面要用到。

      然后,由于count(*)统计,采用的是逐行判断式的统计,先建立虚拟表,判断存在相同字段如果存在,统计值+1,不存在返回0,开始搜索下个字段。

      这个我举个例子:

      例如表中有十个苹果,然后执行统计。

      第一次

      key    统计值

      苹果    1

      第二次

      key   统计值

      苹果    2

      ……

      最后由于floor(rand(0)*2)执行返回的是固定值,所以按照count(*)统计,在第4次执行后第5次执行统计会报错(返回不存在相同字段后,下一次返回相同字段的统计,导致主键相同,所以报错)。

      同时这也说明,表中的内容需要大于3条。

    2、updatexml()【最大长度限制32位】

    select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));

    函数解释:

      updatexml:XML文档进行查询和修改的函数。

      UPDATEXML (XML_document, XPath_string, new_value); 

      第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 

      第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 

      第三个参数:new_value,String格式,替换查找到的符合条件的数

      concat:返回结果为连接参数产生的字符串。

    原理解释:

      通过concat将查询到的信息拼接成字符串,由于updatexml函数的第二个参数需要Xpath格式字符串。现在很显然不是,所以报错。

    3、extractvalue()【最大长度限制32位】

    select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));

    函数解释:

      extractvalue():从目标XML中返回包含所查询值的字符串。

      EXTRACTVALUE (XML_document, XPath_string); 

      第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 

      第二个参数:XPath_string (Xpath格式的字符串)

      concat:返回结果为连接参数产生的字符串。

    原理解析:

      通过concat将查询到的信息拼接成字符串,由于extractvalue函数的第二个参数需要Xpath格式字符串。现在很显然不是,所以报错。

    这回就到这里,记得关注。

  • 相关阅读:
    python 多进程队列数据处理
    python mqtt 客户端实现
    elasticsearch 父子关系
    elasticsearch Mapping使用自定义分词器
    elk 解决浏览器跨域问题
    elasticsearch 英文数字组合字符串模糊检索
    elasticsearch 关联单词查询以及Shingles
    elasticsearch 分析器 分词器
    Leetcode: Binary Tree Postorder Traversal
    Leetcode: Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/MiWhite/p/6241265.html
Copyright © 2011-2022 走看看