buuctf-pwn PWN8题解(学习过程持续更新)

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

checksec pwn 查看一下保护机制

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

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

可以看到buf在rbp-0x60处,nbytes在rbp-0x8处,所以我们可以利用buf将nbytes的值更改成任意值(0x100),然后read(0,&v1,nbytes)栈溢出

返回虚拟机

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

得到pop_rdi_ret=0x400793,ret_addr=0x400509

nano exp.py

第一次payload:更改第二次输入的内容为0x100字节,让其可以发送栈溢出

第一次payload2:调用puts函数,泄露read@got里存储的read函数的真实地址,进而获得system函数和字符串'/bin/sh'的地址,并在最后返回sub_4006A9函数

第二次payload:同上

第二次payload2:构造system("/bin/sh"),获得shell

保存退出

python3 exp.py

7

cat flag

此题完

相关推荐
微软技术分享21 分钟前
面向二进制安全的大模型多智能体框架
网络·安全·web安全
Escalating_xu4 小时前
【C 语言】深入理解指针(5):sizeof、strlen、数组名语义与指针笔试题全解析
java·c语言·开发语言
小雪崩4 小时前
嵌入式学习 day61-62:IMX6ULL驱动——系统移植
学习
Code_Solitude4 小时前
c语言:递归
java·c语言·算法
一隅论数智5 小时前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
我命由我123455 小时前
Photoshop - Photoshop 使用内容识别填充移除对象
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·photoshop
万年咸鱼5 小时前
解决C语言的内存释放机制
java·c语言·python
梓雨枔6 小时前
JavaScript+快速学习,简单好用~
javascript·学习
老王爱玩车6 小时前
自定义类型:结构体
c语言·开发语言·学习
JWASX7 小时前
Java 转 go 学习 - GRPC(1)
学习·golang