南京大学计算机基础(四)踩坑笔记

第六周 缓冲区溢出章节

bang问题:

rumble问题:

仔细分析汇编和栈的调用,这道题挺难的!【搞了我3个小时,真的别只用gdb,用ida静态结合gdb动态才是正解。】

  • 用ida标一标,其中的write_here是为了随机地址防止你直接push的。write_here存储的字符串是你大写的cookie值,比如我-u 1234的cookie是0x6eecf91d,那么这里就是"6EECF91D"。
  • 然后注意的是memcmp比较的是地址,所以你getbuf中应该push一个地址。
  • 缓冲区的输入应该长成这样,注意到我的"6EECF91D"的十六进制是0x43454536 0x44313946【注意要颠倒过来】。
  • 然后push %esp表示当前地址。
  • 注意到栈帧中第一个参数是$ebp+8,所以你要压入一个"返回地址",我这里压的是0x11111111占位。
相关推荐
XiaoCCCcCCccCcccC18 小时前
Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb
linux·c语言·gdb
shimly12345613 天前
(done) gdb 在系统编程中的调试技巧
gdb
yunteng52118 天前
VisualStudio远程编译调试linux_c++程序(二)
linux·c++·ssh·gdb·visual studio·remote
CYRUS STUDIO20 天前
详解ARM64可执行程序的生成过程
android·c语言·汇编·c++·gdb·arm64
云中双月20 天前
如何使用Ida Pro和Core Dump文件定位崩溃位置(Linux下无调试符号的进程专享)
linux·嵌入式·gdb·调试·gcc·崩溃·ida pro·ulimit·core dump·cross compile
zkk95271 个月前
C++调试方法(Vscode)(一) ——本地调试
开发语言·c++·vscode·gdb·调试
zkk95271 个月前
C++调试方法(Vscode)(二) ——本地调试(ROS版)
开发语言·c++·vscode·gdb·调试
Jouzzy2 个月前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
捕鲸叉2 个月前
GDB快捷键问答之01 源代码操作
gdb
Betty’s Sweet3 个月前
[Linux]:环境开发工具
linux·git·vim·makefile·gdb·gcc·g++