218 字
1 分钟
ctfshow stack overflow pwn75
2026-05-19
ctfshow
/ stack-overflow

栈空间不够怎么办,栈空间不够就去做栈迁移。

这个函数从调用层面讲毫无用处,然而却实打实的给了我们 system 函数。

ctfshow 这个函数有两次输入,但均只有两个字节的溢出,写 ROP 链的位置肯定是不够的。
这里就要用到栈迁移的知识点了,然而我只知道要 leave; leave; ret,具体的操作方式和运行结果我是不清楚的。所以我去网上搜索了资料:

exp:

其中 0x38 = 0x28 + 0x10,0x10 是 main_ebp 与 buf_ebp 之间的相对偏移。
这里的 system 函数后跟的 b"aaaa" 是作为 system 函数的返回地址存在,p32(buf+16) 作为其参数调用,指向写在之后的 b"/bin/sh\\x00"。

ctfshow{681b8551-ba3e-414b-94f5-9f8655ccca62}
ctfshow stack overflow pwn75
https://alf-ovo.cn/posts/ctfshow-stack-overflow-pwn75/