美文网首页
SQL注入:实施报错注入攻击

SQL注入:实施报错注入攻击

作者: 搬码人 | 来源:发表于2021-07-27 11:37 被阅读0次

定义

报错注入是一种SQL注入类型,用于使SQL语句报错的语法,用于注入结果无回显但错误信息有输出的情况。返回的错误信息即是攻击者需要的信息。

MySQL的报错注入主要利用MySQL的一些逻辑漏洞,如BigInt大数溢出等,由此可以将MySQL报错注入主要分为以下几类
1、BigInt等数据类型溢出;
2、Xpath语法错误;
3、count()+rand()+group_by()导致重复;
4、空间数据类型函数错误。

常见函数

很多函数会导致MySQL报错并显示出数据:
1、floor函数;
2、extractvalue函数;(最多32字符)
3、updatexml函数;
4、exp()函数。

rand函数知识点预备
image.png

可以看到在rand()中未设置seed时产生的随机数不同


image.png

当设置了初始化种子后


image.png

floor函数知识点预备

image.png
image.png

count(),rand()以及group by的联合使用

image.png

select count(),floor(rand(0)2)x from users group by x;
先该语句会产生一张虚拟表count()-x,该虚拟表的主键是group by后指定的x,在初始时该虚拟表为空;在执行group by的过程中,一条一条的遍历user表,获得x字段的值,该x字段的值是通过floor(rand(0)2)计算得来;得到了x的值后,根据x的值将其插入count()-x表中,如果x字段的值在虚拟表count()-x中已经存在,就将count()的值增加1,如果x字段的值在虚拟表count()-x在虚拟表中不存在,就会将新的记录插入到该虚拟表中,在插入过程中又会执行一次floor(rand(0)2)的计算,因为floor(rand(0)2)是随机生成0、1数字,这也就有一定的几率导致在插入过程中生成的x的值与遍历原表过程中得到的x的值不一致,而因为只有0和1两种情况,一旦在插入过程中生成的x的值与遍历原表过程中得到的x值不一致,就会与虚拟表中已有记录的x值重复。又因为x是该虚拟表的主键,在该虚拟表中是不可以重复的,也就出现上面的报错
总的来说floor(rand(0)*2)在该语句中会执行两次,一次是在遍历原表中的数据的时候,会计算一次x的值;一次是当虚拟表中没有该x的值,准备将新的记录插入虚拟表中的时候。一旦这两次的计算结果不一致,就会导致插入过程的报错。

extractvalue函数的使用

为何要使用concat?
extractvalue函数在取值的时候遇到前面的报错截断直接执行完成,所以无法取值后面的有效信息,所以需要使用concat函数将二者链接起来。


image.png

updatexml函数的使用

image.png

exp()函数的使用

image.png

注意,exp()产生错误,但是并没有爆出database(),但是发现database()是表达式,在脚本语言中会转化为相应的值,从而爆出数据库名。

通过报错注入获得后端数据库的版本号

image.png

通过报错注入获取后端数据库的用户和名称

image.png

通过报错注入找到dvwa这个数据库对应的数据表,limit限制输入表的数量

(注:select table_name from information_schema.tables where table_schema='dvwa'必须用’()‘封装起来,是有这样这部分才能作为数据通过contat与错误信息拼接)


image.png

查询users表中的信息(admin和password)

image.png image.png

此时需要注意的是取出的密码不是全的,原因是extractvalue函数取值数量的限制(32位)。


image.png

MID函数的介绍

image.png

利用MID函数取出完整password


image.png

相关文章

  • SQL注入:实施报错注入攻击

    定义 报错注入是一种SQL注入类型,用于使SQL语句报错的语法,用于注入结果无回显但错误信息有输出的情况。返回的错...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • java编程学习笔记——mybatis SQL注入问题

    SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序...

  • 笔记:web漏洞

    SQL注入 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,...

  • SQL注入-报错注入攻击

    特别声明:该文章只运用于学习安全测试交流之用,请勿用于其他 基础知识准备: MySQL 5.1.5版本中添加了对X...

  • PHP代码安全之SQL注入

    PHP代码安全之SQL注入 1、什么是SQL注入? SQL攻击(英语:SQL injection),简称注入攻击,...

  • SQL注入总结

    分类 SQL注入的攻击方式根据应用程序处理数据库返回内容的不同,可以分为可显注入、报错注入和盲注。 可显注入 攻击...

  • 面试官问你 SQL 注入攻击了吗?

    为什么要聊 SQL 注入攻击? 什么是 SQL 注入攻击? 如何进行 SQL 注入攻击? 如何防范? 常见面试题 ...

  • 【最全干货】SQL注入大合集

    SQL注入的攻击方式根据应用程序处理数据库返回内容的不同,可以分为可显注入、报错注入和盲注。 可显注入 攻击者可以...

  • SQL 注入有病,安全专家有何良方?

    SQL 注入攻击现状 SQL 注入攻击是一个非常老的攻击方式,由于很多应用程序都存在 SQL 注入漏洞而且 SQL...

网友评论

      本文标题:SQL注入:实施报错注入攻击

      本文链接:https://www.haomeiwen.com/subject/hwmgmltx.html