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

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

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

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

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

可以看到然我我们输入一个值nbytes,如果有符号整型nbytes<=10就可以执行read(0,&buf,(unsigned int)nbytes)。所以我们需要(signed int)nbytes小于等于10,同时(unsigned int)nbytes足够大,才可以发生栈溢出,覆盖返回地址。

signed int范围:2**31~2**31-1

unsigned int范围:0~2**32-1

我们如果让nbytes=2**31,那么(signed int)nbytes就会等于-2**31,(unsigned int)nbytes就会等于2**31,正好满足我们的要求

返回虚拟机

ROPgadget --binary pwn --only "pop|ret"

得到ret_addr = 0x400599

nano exp.py开始写攻击脚本

第一次发送2**31,整数溢出

payload:填充0x10+8的垃圾数据至return address;ret_addr用于栈对齐;0x400726为backdoor函数的地址,用于覆盖返回地址,获得shell

保存退出

python3 exp.py

cat flag

此题完

相关推荐
andxe19 分钟前
工业级 PoE 交换机选型指南:破解边缘部署四大核心难题
运维·网络·安全·光通信·交换机
旖旎夜光33 分钟前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
橙橙笔记3 小时前
QT的学习第四部分
linux·qt·学习·音视频
狂师3 小时前
把别人的软件拆开看,推荐5个主流逆向工具
安全·程序员·开源
叼烟扛炮3 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
在猴站学算法3 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
旖旎夜光4 小时前
【C++ 基础入门】C++ 继承(上):概念、切片、隐藏、默认成员函数与友元
c++·笔记·学习
Godspeed Zhao4 小时前
从零开始学AI24——无监督学习之K均值
学习·机器学习
叼烟扛炮4 小时前
[LangChain] 学习笔记(05):提示词模板(Prompt)与少样本注入(Few-Shot)实战
linux·人工智能·笔记·学习·langchain·prompt
jimmyleeee12 小时前
大模型安全之五十一:OWASP LLM Top 10 全景解读
人工智能·安全