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

第六周 缓冲区溢出章节

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占位。
相关推荐
ttkwzyttk1 天前
GDB TUI窗口管理
gdb
ttkwzyttk2 天前
GDB观察点与捕获点使用
gdb
ttkwzyttk7 天前
GDB函数调用栈管理
gdb
ttkwzyttk8 天前
GDB调试变量、内存与寄存器查看与修改
gdb
ttkwzyttk9 天前
GDB调试简介与调试配置
gdb
modelmd21 天前
GDB 摘要
gdb
源分享23 天前
GDB下载和安装保姆级教程
gdb
modelmd1 个月前
翻译 GDB 官方文档
gdb
kidwjb1 个月前
一次多进程信号量同步失效的排查实录
gdb·进程通信·信号量
炘爚1 个月前
C++11实现线程池:项目实现过程的报错与gdb调试
stl·gdb·shared_ptr