Q版缓冲区溢出教程 · 配套实验

交互实验室

四个实验,对应第一章与第五章的课堂内容。全部在浏览器里算,不需要联网。

实验一 · 啤酒与杯子

模拟书里第一个程序:char output[8]; strcpy(output, name);。输入的内容会被拷进 8 字节的缓冲区,多出来的部分顺着栈往下写。

output[8] 缓冲区 保存的 EBP 返回地址 未被写入(原值)

实验二 · 定位溢出点

书里靠“数够不够长”来估偏移,实战里用带标记的字符串更准:每个 4 字节组合只出现一次,崩溃时看 EIP 就能反推偏移。


    

实验三 · ShellCode 变形编码

异或编码(书 5.2 节):把每个字节和密钥异或,就能把 \x00 这类“坏字节”藏起来,运行时再由一段解码代码还原。


    

实验四 · 组装一条完整 Payload

把书里的三段拼起来:前面用 \x90(NOP)铺路,中间放 ShellCode,最后用跳板地址盖掉返回地址。


    
页内实验是模拟:用来把概念跑通、把偏移算对。真机验证(调试器调栈、看寄存器、跑 gdb)需要隔离的靶机环境。