canary保护

Canary保护机制及绕过 1、网络安全理论知识(2天)①了解行业相关背景,前景,确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。(非常重要)2、渗透测试基础(一周)①渗透测试的流程、分类、标准②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础(一周) 阅读详情

在这里插入图片描述
1.在函数刚开始执行时会设成一个标志,这个标志会入栈,当程序执行完之后,他会校验canary值是不是会发生变化,如果发生变化,说明程序被改过,发生异常,如果没改过就正常

这个在突破时我们用canary去泄露,canary是一个随机的值,每次程序执行他都是一个变量,核心就是每次执行时泄露一下,然后去拼接我们的shellcode

2.正常情况下能够在堆栈中加上我们shellcode的代码,但如果堆栈没有执行权限,shellcode就不能执行

3.函数地址随机化

堆喷射就是在堆栈里加很多shellcode,程序执行到任何一个shellcode都会执行获取shell

4.got表不可改

Canary保护
在这里插入图片描述在这里插入图片描述第一行参数:所有程序都会加上canary保护
第二行:只有函数中有char这样数组的才会给你加上canary保护
第三行:禁止canary保护
-m32:编译成32位程序
-o0:不进行任何优化
Canary.c:我们要编译的文件
-o:要输出文件
B:打断点
第三行:查看寄存器的值(ebp)
第四行:查看栈里的数据

目标程序
在这里插入图片描述
不加保护时在这里插入图片描述
第二句做内存对齐用
可以减少读取次数
如下图:一次读取四个字节,对齐之前我们先读取a,再读取三个b,最后b还有再读最后一个字节;如果时对齐之后,直接分两次读完a和b
在这里插入图片描述
第一行和第三行是为了保护main方法的,确保main执行完后返回到哪里
调试看一下

反汇编主函数后在最开始的地方下断点
R、n起来
在这里插入图片描述
现在esp的地址相当于栈里的ret,覆盖就要覆盖它
执行前三行代码对我们的esp是没有影响的,第一行和第三行是为了保护我们的esp的,避免受第二行的影响
在这里插入图片描述
加canary后:+17,+23
此时eax已经是我们的canary值了

在这里插入图片描述发现尾号1300的canary值
在这里插入图片描述
xor异或比较,如果正常则下一命令,如果错误跳转到call那里执行异常程序在这里插入图片描述输入东西动态调试看看canary的值

它这个默认printf打印format+4的位置

在这里插入图片描述在这里插入图片描述
%08x被加入到前面的format变成字符串了
在这里插入图片描述
第二个程序
在这里插入图片描述
看我们输入的字符串在栈中距离canary有多远,从而读取其值
在这里插入图片描述
往下取到第十五个就是canary的值即尾号d5dc的位置
在这里插入图片描述
获取内存地址
在这里插入图片描述
Canary地址,08x是取8位
在构造payload前还要计算偏移量

在这里插入图片描述从d5bc的输入开始覆盖,先覆盖dc的canary的值,再覆盖ret值

写脚本时忘了函数可以写入print dir(开头字母)

在这里插入图片描述Canary要翻转改成小端序

Canary栈保护机制 实验要求:调研 VC .net 或 GCC 4.*中的 Canary 技术实现, 弄懂原理并设计相应的实验例程进行测试,编制相应 报告。 实验环境: Windows 10, 编译器配置为 TDM-GCC 4.8.1 64-BIT Debug 实验主题: 调研 GCC 4.*中的 Canary 技术: 原理: 1、 在所有函数调用发生时,向栈帧内压入一个额外的随机 DWORD,这个随机数被称作 “c... 阅读详情

相关推荐

Canary、Pie保护

Canary 的意思是金丝雀,来源于英国矿井工人用来探查井下气体是否有毒的金丝雀笼子。工人们每次下井都会带上一只金丝雀。如果井下的气体有毒,金丝雀由于对毒性敏感就会停止鸣叫甚至死亡,从而使工人们得到预警。canary是一种用来防护栈溢出的保护机制。其原理是在一个函数的入口处,先从fs/gs寄存器中获取一个值,一般存到EBP - 0x4(32位)或RBP - 0x8(64位)的位置。

2301_79880752的博客 1338

Canary保护

之前做题没做过canary类型,今天补知识盲点遇到canary,恰好也写一篇吧。 学pwn时基本会遇到几种保护类型,如RELRO,PIE,NX,还有Canary,这里解释一下canary。 栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将c

u014377094的博客 1540

DeepSeek+Dify实战:零代码构建智能SQL生成器

本文详细介绍了如何利用DeepSeek和Dify零代码构建智能SQL生成器,帮助非技术人员通过自然语言查询数据库。文章涵盖从数据准备、知识库设计到Agent配置的全流程,并提供了优化技巧和实际应用案例,显著提升团队数据查询效率。

weixin_29311017的博客 419

[PWN][基础篇]什么是Canary保护

什么是Canarygdb指令复习 有无Canary呢就是在函数压栈的时候,函数刚开始执行的时候,它会多一个参数,也就是在ebp的上面,会压入一个Canary的值,在子函数验证完之后,对比Canary的值,看看是否相等。不相等,代表程序被修改,产生了异常。 本次实验教学代码如下: 实验目的,对比有无Canary保护的程序有何不同 gcc -m32 -no-pie -fno-stack-protector -o canary canary.c -m32 32位程序 -no-pie 中间没有空格 -fn

网络安全知识分享 4872

拆解博世、大陆的EMB方案:自增力机构如何省下83%的能耗?

本文深度解析了博世和大陆的电子机械制动(EMB)技术,重点探讨了自增力机构如何实现83%的能耗节省。通过对比电机直驱型和自增力型EMB的技术参数,揭示了自增力机构在能量优化和系统集成方面的创新优势,为汽车电动化和智能化提供了关键技术支持。

weixin_42665725的博客 396

中兴FTTR光猫变简易OLT:低成本搭建全光监控与局域网实战指南

本文详细介绍了如何将中兴FTTR光猫改造为简易OLT设备,实现低成本全光监控与局域网扩展。通过LOID认证、桥接模式设置及终端数破解,用户可利用二手设备搭建高性能光纤网络,适用于远程监控和长距离组网场景,显著降低部署成本。

chair的专栏 2041

canary保护和pie保护的绕过

今天通过三道例题学习一下开启canary,pie保护的解题方法。

2301_79880074的博客 3327

单细胞测序流程(十)KEGG通路富集分析与可视化圈图实战解析

本文详细解析了单细胞测序数据分析中KEGG通路富集分析与可视化圈图的完整实战流程。从差异表达基因列表出发,通过R语言进行KEGG富集分析,并利用Perl脚本进行基因ID转换,最终使用GOplot包绘制高级可视化圈图,帮助研究者将基因列表转化为有意义的生物学故事。

i7j8k9l的博客 407

绕canary保护

这几天一直在跟着团队的进度做csapp的实验报告,突然想拿题来练手了才发现自己还是有点菜的。这次的任务是做一道简简单单的带canary保护的一题,做了很长时间问了很多师傅,也算把这个方法搞搞明白了,但是不确定能不能完全说的明白,那么下面就开始吧。 canary保护 canary就是一段简简单单的cookie,它一般在上个函数所保存的ebp之前(即靠近栈顶的那个方向)下面一个图能描述一个带canary保护的栈帧,应该还是比较清楚的。 ↑栈顶 buf//函数的缓冲区,一般用于保存局部变量 canary ebp/

xia0ji233 508

Marvell 88Q6113 如何制作一个完整的量产固件88Q6113_flash.bin并进行烧录

本章节介绍如何基于Marvell工具链,制作一个完整的量产固件88Q6113_flash.bin,集成用户自定义的配置文件 config.bin,用于88Q6113的Flash烧录。注:Marvell 88Q5072 与 Marvell 88Q6113 的配置流程是一样的。

老板来份猪脚拼叉烧的博客 2013

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

374

PWN基础4:Canary保护

Canary保护概述 在函数调用发生时,向栈帧内压入一个额外的随机DWORD,这个随机数被称为“Canary” 如果使用IDA反汇编的话,您可能会看到IDA会将这个随机数标注为“Security Cookie”,在部分书籍的叙述中会用Security Cookie来引用这种随机数 Canary位于EBP之前,系统还将在内存区域中存放一个Canary的副本 当栈中发生溢出时,Canary将被首先淹没,之后才是EBP和返回地址 在函数返回之前,系统将执行一个额外的安全验证操作,被称作“Security

prettyX的博客 1154

【5】GD32H7xx CAN发送及FIFO接收

GD32H7xx CAN收发调试记录,包含源码

madao1234的博客 1818

[pwn]ROP:三道题讲解花式绕过Canary栈保护

文章目录绕过Canary栈保护Canary栈保护babystack writeupMary_Morton writeup 绕过Canary栈保护 Canary栈保护 Canary是一种栈保护手段,通常通过在栈中插入cookie信息(一般在ebp上方),在函数返回的时候检查cookie是否改变,如果改变则认为栈结构被破坏,则调用一个函数强制停止程序。当开启Canary保护的时候不能通过传统的栈溢出直...

Breeze的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

刷题小结2:pie与canary保护

pie保护开启后也就是所有地址都被随机化了,包括ida与ROPgadget所看到的所有地址都只有最后几位,这是相对于当前随机产生的pie的基址的偏移,那么我们如果能得到pie的基址,就能得到其他地址,从而拿到权限,这里总结的方法是接收pie的基址。先checksec一下,可以看到开启pie保护,同时ida里也不是可以用的地址,而是偏移。那么看主函数主函数的逻辑就是进行两次循环,分别输入1,2,3或者其他进入对应函数case1:非常明显的栈溢出,可以覆盖rbp以及返回地址。

weixin_66751120的博客 1440

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

3.14学习——学会用pwntools进行调试以及学习canary保护

再根据伪C代码v6数组储存了canary,v4数组从[rbp-50h]开始,大小32字节,要填充的buf从[rbp-30h]开始,占用了40字节,而且占用[rbp-30h]到[rbp-8h],这非常关键,也就是说只要buf中填充超过40字节,多出来的部分就会覆盖canary导致程序崩溃。这是题目示例里的canary校验,当用户输入后会将输入后的canary与之前的canary副本进行异或,如果异或的值不是0,则执行___stack_chk_fail函数使程序崩溃。就说说我的逻辑和疑点,还请各位大佬指正。

2401_88422349的博客 1182

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[PWN][基础篇]如何利用printf漏洞突破canary保护

如何利用printf漏洞突破canary保护 使用的实例代码如下 为了配合本次实例的教学,大家在编译时,不加pie保护,加cannary保护,整个的流程就是,分析程序之后,编写exp,利用printf漏洞(填充func函数,使其返回地址为exploit函数)来突破canary并且覆盖ret。 之后使用gdb开文件,查看func函数 来自英语白痴的小tip: 我们可以大概搞清楚func的流程,就是先read,然后printf,然后read,就是这样子。 我们下断就下到printf这里,我输入的测试用例是

网络安全知识分享 4185

如何利用printf漏洞突破canary保护

如何利用printf漏洞突破canary保护 原理: 1、 在所有函数调用发生时,向栈帧内压入一个额外的随机 DWORD,这个随机数被称作 “canary”,用 IDA 反汇编时,又被称作“Security Cookie”。 2、 canary 位于 EBP 之前,系统还会在.data 的内存区域中存放一个 canary 的副本。 3、 当栈中发生溢出时,canary 将被首先淹没,之后才是 EBP 和返回地址。 4、 在函数返回之前,系统将执行一个额外的安全验证操作,称作 Security Check。

fanghuapyk的博客 580

两种保护机制:NX和Canary

因为自己学的比较慢,自学能力也比较差,假期过去挺久了,进度也才跟进到保护机制,可能接下来会花比较长的时间在这里。而保护机制我是从最简单的NX保护机制开始学起的,NX典型的例子有ret2syscall和libc,为了便于理解为什么有这种保护机制以及为什么需要这种保护机制,我去网上找了一些NX的原理。 NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行

weixin_46711318的博客 6225

借助格式化输出过canary保护

0x01 canary保护机制 栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止s...

qq_41683305的博客 316

pwn入门笔记(2)——什么是Canary保护

有无Canary保护的区别 无canary保护 有canary保护 子函数在执行完了之后会去对比之前开始压入的有没有变化,如果不一样,就说明被改了 实例 #include<stdio.h> int main() { char *name = "Roger"; printf("My name is %s"); return 0; } 源码已给,之后参考笔记(0)去编写 接下来输入 gcc -no-pie -fno-stack-protector -m32 -o pr

weixin_45551695的博客 502

栈保护者Canary的实现细节

1.示例copy函数 汇编代码: 失去栈保护的汇编代码: 比对发现,在有栈保护的汇编代码中增加了一些指令,其中: mov %gs:0x14,%eax mov %eax,-0xc(ebp) 两句指令,是向栈中插入一个canary值。使用栈保护的copy函数栈是这样的: canary的值是随机生成的,在内存中保存有两份: ①一个是保存在特殊的段内,这个段被标示为只读,不可修改。 ②另一个在栈...

哈哈哈哈哈哈哈哈的博客 2160

canary和pie保护实战-buuctf公开赛道[canary]

canary和pie的学习之路

2401_83500274的博客 911

ctf(pwn) canary保护机制讲解 与 解密方法介绍

Canary保护机制 canary的意思是金丝雀,来源于英国矿井工人用来探查井下气体是否有毒的金丝雀笼子。工人们每次下井都会带上一只金丝雀如果井下的气体有毒,金丝雀由于对毒性敏感就会停止鸣叫甚至死亡,从而使工人们得到预警。 在函数开始时就随机产生一个值,将这个值CANARY放到栈上紧挨ebp的上一个位置,当攻击者想通过缓冲区溢出覆盖ebp或者ebp下方的返回地址时,一定会覆盖掉CANARY的值;当程序结束时,程序会检查CANARY这个值和之前的是否一致,如果不一致,则不会往下运行,从而避免了缓冲区溢出攻

半岛铁盒的博客 3076
上一篇: 简单栈溢出
下一篇: ret2text
Power_shell
博客等级 码龄7年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值