栈溢出——cannary绕过方法详解

本文详细介绍了栈溢出保护中的Canary原理,并探讨了五种有效的绕过方法,包括利用栈的变化规律、爆破Canary值、修改函数Got表、覆盖flag地址以及操纵TLS结构。每种方法都结合了实践操作和原理分析。
摘要由CSDN通过智能技术生成

栈溢出保护及整数保护

说点什么

之前觉得学习原理很没有用,不如实践去执行

原理很多、很杂,很没用

真正去做时发现,原理是能做、不能做

从根本上指导实践,减少100%的试错时间

知行合一…

Canary原理

image-20220314185521681

Canary是在栈的尾部插入值,函数返回时检测canary是否改变,判断是否溢出

利用gcc编译:

gcc … -fstack-protector

image-20220314190213372

如果Canary检查到,会调用__stack_chk_failed函数

绕过:

image-20220314190450780

绕过方法1

image-20220314190852476

至少利用两次栈溢出,才可以使用绕过方法1

image-20220314191036897

V3后代表开启canary,所以v3是canary字节

第一次打印canary,第二次利用

buf距离ebp,10C个字节,v3距离ebp,C个字节,所以buf为100个字节

gdb:

dias main

disas vuln

image-20220314194309705

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值