开篇我要说下,在《代码审计:企业级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格式字符串。现在很显然不是,所以报错。

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

十种MYSQL显错注入原理讲解(一)的更多相关文章

  1. 十种MYSQL显错注入原理讲解(二)

    上一篇讲过,三种MYSQL显错注入原理.下面我继续讲解. 1.geometrycollection() and geometrycollection((select * from(select * f ...

  2. 十种MYSQL显错注入原理讲解(三)

    这回间隔时间有点长了,年前年后忙的头晕眼花,外加大病.下面我继续讲解. 1.multipolygon() and multipolygon((select * from(select * from(s ...

  3. Mysql报错注入原理分析(count()、rand()、group by)

    Mysql报错注入原理分析(count().rand().group by) 0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截 ...

  4. ref:学习笔记 UpdateXml() MYSQL显错注入

    ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...

  5. 学习笔记 UpdateXml() MYSQL显错注入

    在学习之前,需要先了解 UpdateXml() . UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是Stri ...

  6. 十种MySQL报错注入

    1.floor() select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand ...

  7. sql注入--双查询报错注入原理探索

    目录 双查询报错注入原理探索 part 1 场景复现 part 2 形成原因 part 3 报错原理 part 4 探索小结 双查询报错注入原理探索 上一篇讲了双查询报错查询注入,后又参考了一些博客, ...

  8. SQL注入之Mysql报错注入

    --志向和热爱是伟大行为的双翼. 昨天偷懒了没学什么东西,先自我反省一下 - -. 今天认真的学习了一下Mysql报错注入利用方法及原理,好久之前就像认真的学一下这个了,是在上海市大学生网络安全大赛中 ...

  9. MySQL报错注入总结

    mysql暴错注入方法整理,通过floor,UpdateXml,ExtractValue,NAME_CONST,Error based Double Query Injection等方法. 报错注入: ...

随机推荐

  1. 【python之路4】循环语句之while

    1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...

  2. java根据html生成摘要

    转自:http://java.freesion.com/article/48772295755/ 开发一个系统,需要用到这个,根据html生成你指定多少位的摘要 package com.chendao ...

  3. ASP.NET 5运行时升级到Beta5

    在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变.和Visual Studio 2015 RC一起安装的AS ...

  4. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  5. [转]Java实现定时任务的三种方法

    在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...

  6. 如何用 MEF 扩展应用程序

    最近在写一篇关于如何扩展 Visual Studio 编辑器的文章时,用到了 MEF,因此打算写一篇文章提一下这个技术点.本篇文章并不打算详细介绍 MEF,只是一个最简单的入门,相信您在阅读本篇文章后 ...

  7. Linux Hadoop2.7.3 安装(单机模式) 一

    Linux Hadoop2.7.3 安装(单机模式) 一 Linux Hadoop2.7.3 安装(单机模式) 二 java环境安装 http://www.cnblogs.com/zeze/p/590 ...

  8. spring boot(四):thymeleaf使用详解

    在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用.thymeleaf 是新一代的模板引擎,在spring4. ...

  9. GO语言下载、安装、配置

    一.Go语言下载 go语言官方下载地址:https://golang.org/dl/ 找到适合你系统的版本下载,本人下载的是windows版本.也可以下载Source自己更深层次研究go语言. 二.G ...

  10. 细说Java主流日志工具库

    概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util ...