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

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

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

可以看到这是一个64-bit的文件

在gdb里看一下vmmap

可以看到stack是可读可写可执行的,但是其他区域都是不可执行的

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

可以看到存在gets(text)栈溢出,双击name

可以看到name在bss段,但是bss段是不可执行的,所以在name处写shellcode是行不通的

我们考虑用ret2libc的解题手法

返回虚拟机

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

得到pop_rdi_ret = 0x400713,ret_addr = 0x4004c9

nano exp.py 开始写攻击脚本

payload:调用puts函数,泄露puts@got里存储的puts函数的真实地址,进而得到system函数和'/bin/sh'的真实地址

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

保存退出

python3 exp.py

0

cat flag

此题完

相关推荐
晓蛋21 小时前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
一隅论数智21 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
傲世仙尊21 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
XiHongShi201621 小时前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本1 天前
离散数学第六课
学习·离散数学
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言
phltxy1 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
phltxy1 天前
C 语言中的数据存储:从类型到二进制位
c语言
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展