PWN-栈溢出入门-进阶篇

最近花了一段时间深入学习了ctf-wiki中pwn部分,重点学习了其中关于栈溢出相关的知识,并接着Sven分享的栈溢出入门-基础篇,整理了下最近学习的知识点为本进阶篇,推荐组合阅读。

PWN-基础ROP

随着 NX 保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。攻击者们也提出来相应的方法来绕过保护,目前主要的是 ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段( gadgets )来改变某些寄存器或者变量的值,从而控制程序的执行流程。

PWN-ZCTF2017-Login

Canary 绕过技术之劫持__stack_chk_fail函数。 Canary 失败的处理逻辑会进入到__stack_chk_fail函数,__stack_chk_fail函数是一个普通的延迟绑定函数,可以通过修改GOT表劫持这个函数。利用方式是通过fsb漏洞篡改__stack_chk_fail的GOT表,再进行ROP利用。

PWN-Canary栈溢出保护

Canary 的意思是金丝雀,来源于英国矿井工人用来探查井下气体是否有毒的金丝雀笼子。工人们每次下井都会带上一只金丝雀。如果井下的气体有毒,金丝雀由于对毒性敏感就会停止鸣叫甚至死亡,从而使工人们得到预警。