首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
CTF对抗
发新帖
0
0
[原创]KCTF2026 PWN
发表于: 2026-8-7 17:48
10
[原创]KCTF2026 PWN
ADuie
2026-8-7 17:48
10
# pwn 设计思路 (WP) ## 概述 程序是一个简单的解释器,所有值都是 64 位,高 16 位用来做类型标识:结构体头是 `0xbeef`,低 48 位存 size;指针用 `0x1337` 标识。 漏洞在两个地方:二元运算时不过滤最高 16 位,存内存时也不做任何过滤。所以可以把值的最高 16 位拼成 `0xbeef`,伪造一个结构体头,size 随便定。这是典型的类型混淆。 伪造出来的 size 可以开到 48 位全满,于是访问就变成了越界读写。 ## 泄漏 分配的内存不大,都在堆上。越界往后读能依次读到: - 虚表地址 → 推 PIE 基址 - 堆地址 - libc 地址:用 `std::vector` 构造 unsorted bin,释放的大块 fd/bk 指向 `main_arena`,越界读出来减偏移得 libc base ## 劫持 越界写覆盖虚表指针,`delete parsed_cmd` 走虚表析构时劫持控制流。堆上直接用 Number 伪造一块虚表,virtual 表项填 one_gadget,返回主循环 delete 即触发 `execve("/bin/sh")`。 ## 加密 堆上数据用进程随机 key 异或加密。先用一个全 0 的 block 做一次读取,读到 0^K 就能泄出 key;拿到 key 后把 key 槽清成 0,后续所有堆操作都不用再解异或。
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
最后于
2026-8-23 10:45 被ADuie编辑 ,原因:
上传的附件:
pwn
(26.14kb,3次下载)
收藏
・
0
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
ADuie
1
发帖
0
回帖
0
RANK
关注
私信
他的文章
[原创]KCTF2026 PWN
10
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
pzhxbz
玖捌陆
悠悠过客
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部