buuctf-pwn bjdctf_2020_babystack2题解 整数溢出(学习过程持续更新)

本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题

此处我将文件命名为babystack2

checksec babystack2 查看一下保护机制

可以看到这是一个64-bit的文件,只有NX保护开启

将文件拖入ida64,按F5将汇编代码转换成c语言代码,得到

可以看到让我们输入一个数nbytes,如果有符号型整数的nbytes小于等于10,就可以read(0, &buf, (unsigned int)nbytes),当无符号型整数的nbytes足够大就会发生栈溢出。无符号型整数范围0,2\*\*32-1,是不存在负数的,如果我们输入-1就相当于最大值2**32-1。所以-1有符号型小于10,无符号型足够大,满足我们的需求。

后门函数地址 0x400726

返回虚拟机

ROPgadget --binary babystack2 --only "ret"

得到ret_addr = 0x400599

nano exp.py 开始写攻击脚本

第一次发送b'-1'

第二次发送payload,(0x10+8)是我们要填充的垃圾数据至return address,ret_addr用于栈对齐,0x400726是后门函数的地址

保存退出

python3 exp.py

cat flag

得到flag

CTF2{bde9305c-aec2-45d8-bab7-7d426cb5f51c}

此题完

相关推荐
孤存5221 小时前
c语言动态内存管理
c语言·开发语言·算法
祖力551 小时前
快速学会数据结构中的链式队列与循环队列
linux·c语言·数据结构·算法
艺杯羹1 小时前
古典密码学攻防演进全景:从凯撒移位、频率分析到一次一密与恩尼格玛机破译
网络·人工智能·安全·网络安全·密码学·密码安全
MartinYeung52 小时前
Aztec Connect 黑客攻击深度剖析:结算边界绕过漏洞
安全·区块链
电子云与长程纠缠2 小时前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎
210Brian2 小时前
STM32学习笔记(六)EXTI外部中断(下)
笔记·stm32·学习
MartinYeung52 小时前
[论文学习]Latent Fusion Jailbreak: 融合有害与无害表征以诱导大语言模型产生不安全输出
学习·安全·语言模型
星恒随风2 小时前
C++ 哈希详解(二):开放定址、哈希桶与 C++ 哈希表底层实现
c++·笔记·学习·哈希算法·散列表
迪丽热爱2 小时前
每日英语-17
学习