UW 软硬件接口lab3 bufbomb
文章目录
本实验即常见的缓冲区溢出攻击。(注:新的 64bit Win8/Linux 下这种简单方式无效,x86_64 cpu 的可执行标志位 exec-shield,gcc 栈保护选项开关 -fno-stack-protector)
主函数为 test(),首先声明一个局部变量 volatile int local = 0xdeadbeef,volatile 是编译时不使用 register 优化,必须分配栈空间,后面的实验过程不能覆盖这个 local 变量。
然后就是存在缓冲区溢出漏洞的 getbuf 函数,也就是我们要操作的对象。
第一关
getbuf 函数
|
|
&buf 到 %rbp 距离 48(0x30) Byte,加上 old %rbp 和 return address,一共 64 Byte
smoke.txt 内容应该是
|
|
第二关
fizz 函数一共有7个参数,前6个进 register,最后一个参数 val 进栈
fizz.txt 内容应该是
|
|
第三关
修改全局变量 global_value 等于 cookie,并跳转到指定函数 bang
bang.txt 内容应该是
|
|
bang.s
|
|
文章作者 josephpei
上次更新 2014-08-02