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

第六周 缓冲区溢出章节

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占位。
相关推荐
Golinie8 天前
【C++高并发服务器WebServer】-1:Linux中父子进程fork创建及关系、GDB多进程调试
linux·c++·gdb·fork·webserver·高并发服务器
利刃大大10 天前
【Linux入门】2w字详解yum、vim、gcc/g++、gdb、makefile以及进度条小程序
linux·c语言·vim·makefile·gdb·gcc
努力的CV战士21 天前
C语言gdb调试
c语言·开发语言·gdb
每天敲200行代码21 天前
Linux开发工具--vim编辑器-gcc/g++编译器-gdb调试器
linux·c++·编辑器·vim·gdb
HIT_Weston1 个月前
19、【OS】【Nuttx】【Python】gdb调试优化,python实现构建脚本
python·gdb·os·nuttx
KevinRay_1 个月前
Linux系统编程深度解析:C语言实战指南
linux·c语言·mfc·gdb
fei_sun2 个月前
【计组】实验三 ORI指令设计实验
fpga开发·verilog·计组
Octopus20772 个月前
【linux】gdb
linux·服务器·笔记·学习·gdb
XiaoCCCcCCccCcccC2 个月前
Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb
linux·c语言·gdb
shimly1234563 个月前
(done) gdb 在系统编程中的调试技巧
gdb