0x03-逆向-BoF基础的基础

目录 今日目标 深入 BoF BoF 的前世今生 BoF 的种类 BoF 的应对策略 为什么程序会有栈? 为什么 EBP 和 EIP 会在 BoF 中被覆盖? 栈帧(Stack Frame)以及方法调用 NOP 总结 参考链接 今日目标 今天细看了一下 narnia2(不知道这是什么的小伙伴看我前篇),是个栈溢出的练习。所以,Buffer Overflow,BoF,是今天的主题。这篇文章的标题是基础的基础,我们会把基于栈的溢出深入再深入地探讨一下。网上由很多关于栈溢出地基础例子和文章,想必大家也看过很多了。 带着下面几个问题,我们开始这篇 BoF 基础的基础。无论大家能不能回答这几个问题,看下去,总有一些新的收获。 BoF 的前世今生大家了解多少?BoF 有多少种类型? 都说栈溢出,首先,为什么你的程序会有栈? 漏洞叫做栈溢出,EBP,EIP,或者 BP,IP 是寄存器,一个在内存,一个在 CPU,为什么那些文章总说 EBP 和 EIP 会被覆盖,难道栈溢出还能溢出到 CPU ? 那些文章都提到 nop (\x90),nop 到底是什么?为什么要用 nop? 深入 BoF 我们先了解一下 BoF 的一小段历史,BoF 的种类,以及计算机科学家在与…

0x02-逆向-执行环境变量

目录 今日目标 可以学到什么? 什么是 Shellcode? Shellcode 是怎么编写出来的? Shellcode 测试 “\x” 转义序列 “\x” 的作用 “\x” 转义的 16 进制作为字符串的处理 Bash 设置环境变量 “ $() 如何利用这个漏洞? 参考链接 今日目标 继续 narnia 系列。今天的目标是 narnia1。 首先,这个挑战本身很简单,但是可以细想一下背后的原理,还是有一些地方值得挖掘和理解。 这是 narnia1 的源码。 #include <stdio.h> int main(){ int (*ret)(); if(getenv("EGG")==NULL){ printf("Give me something to execute at the env-variable EGG\n"); exit(1); } printf("Trying to execute EGG!\n"); ret…