[BUUCTF]PWN——picoctf_2018_leak_me(puts的‘\x00’绕过输出敏感数据)

picoctf_2018_leak_me

附件

步骤

  1. 例行检查,32位,开启了nx保护
    在这里插入图片描述
  2. 本地运行看一下大概的情况
    在这里插入图片描述
  3. 32位ida载入
    在这里插入图片描述
    程序执行的大概流程就是先输入name,然后输入password,靶机上应该会有一个password.txt去检测是否输入是否正确,输入正确,就会调用flag函数,flag函数回将flag打印出来
    在这里插入图片描述
  4. 参数v5(存放name)和参数s(存放flag)在栈上的位置相差不远,而且给参数v5读入数据的时候可以覆盖道参数s
    在这里插入图片描述
    在这里插入图片描述
    他们相差0x154-0x54=0x100,而且我们对v5输入的数据长度正好是0x100,可以将v5填充满,后面紧接着的就是s,main函数里的34行会将v5打印出来,puts遇到‘\x00’才停止,v5里的内容现在是0x100*a+password+'\x00'*4c,所以回将password顺带着打印出来。
    这边我使用的cyclic来生成的字符串去读出password
    在这里插入图片描述
    得到密码a_reAllY_s3cuRe_p4s$word_f85406
  5. 接下来重新nc,输入该密码即可
    在这里插入图片描述

这题完全不用写exp,但是水一下文章,还是写一下吧

from pwn import *

p = remote("node3.buuoj.cn",28171)

password = "a_reAllY_s3cuRe_p4s$word_f85406"
p.sendlineafter("What is your name?\n","A")
p.sendlineafter("Please Enter the Password.\n",password)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值