攻防世界PWN题——level0

本文介绍了如何分析64位Linux程序,发现并利用栈溢出漏洞。通过查看文件保护类型,发现只开启了NX保护。在IDA中分析代码,找到栈溢出点和目标函数地址,最终构造exploit实现控制流程,成功获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  嘿嘿,又是我,我又肥来了。今天带来的是攻防世界第三题的writeup,这次话不多说,我们直接进入主题。

  无论怎么样,pwn题前两步少不了——查看文件类型和保护类型:

 64位linux操作系统,只开了NX保护,再打开IDA看看。

将Hello,World显示到屏幕上,再点开函数看看:

可以看到,buf是分配了80个字节(从rbp-80-rbp+0) ,但是read函数读入了0x200字节,因此,这里明显有栈溢出,再点开buff看看:

可以看到,我们只需要将buf和s覆盖,也就是覆盖88个字节,再将下一条指令地址修改成获取flag的地址就好了,但是我怎么知道,获取flag的地址在哪?(r是存储下一条指令的寄存器吧) ,请继续看IDA:

 可以看到,获取权限的函数在这,即只需要把下一条指令的地址改写到这即可,再查看该函数地址:

0x400596,至此,我们便可以写出exp:

 

 运行可得:

   呼~终于写完了,好饿,吃饭饭去了,溜了溜了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值