Canary学习

Canary即系统压入的值,用00结尾截断字符串,用xor比较检测栈是否被破坏。

泄露canary

条件:
* 有合适输出函数
* 函数不会崩溃


🌚这是教学关卡,就别在意为啥有现成的shell地址了。
你也能发现,这种方法局限性挺大的,因为你要用到能输出的函数;并且还要保证这个程序不会轻易退出(不然在leave之前就会检测了)

爆破canary

条件:
* 这个要求函数中有fork()函数,并且还不能崩溃能while的那种。

这让我想起写时拷贝技术。也就是为了省内存空间,将fork+exec适配地更好。
当然,这里主要是因为每个进程canary是确定的,你可以用pwndbg输入canary --all,会发现全都是一样的。

因为有fork函数(这个题目有点为了出题而出题,哈哈),相当于每次失败就立马再while一个新fork,保证每次的canary都是一样的。
这里值得说的是如何在fork中追蹤子进程,可以用pwngdb的set follow-fork-mode child
此处附上链接,帮助我许多

posted @ 2024-08-15 22:15  muyiGin  阅读(8)  评论(0编辑  收藏  举报