吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3425|回复: 25
收起左侧

[Web逆向] WebAssembly 逆向工程挑战赛

  [复制链接]
漁滒 发表于 2025-7-25 09:47

@[TOC](WebAssembly 逆向工程挑战赛)

前言

最近在群聊中有群友分享了一条连接,是github上创建的一个WebAssembly 逆向工程挑战赛

001.jpg

从主页中可以看到,题目全都是通过hash函数计算出了一个sha256的值,需要找到它的原始值,并且原始值都是flag{...}的格式,这是比较常规的格式

再查看一下网站的FAQ

002.jpg

可以看到作者允许公开发布答案,所以有了这一份水贴

第一题

打开f12,进入到第一题中,可以看到直接显示了sha256的结果

003.jpg

从网络请求中可以看到加载了一个wasm文件【level1.wasm】和对应的胶水代码【wasm_exec.js】

根据胶水代码可以看出是使用go语言编写的

004.jpg

然后多次刷新页面可以发现,得出的结果是不变的,同时在网页中也没有明确的提示为动态的flag,那么可以暂且认为这是一个静态的flag

既然题目是从摘要算法中找到原文,那么使用的摘要算法大概率也是标准算法,虽然不认识go,但是可以问问豆包go怎么计算sha256

005.jpg

豆包给出了使用crypto/sha256这个包下的Sum256方法,那么就在wasm中搜索这个方法

006.jpg

可以搜索到4处,说明符号名没有被去除,直接在调用处下一个断点,然后刷新,可以成功在断点中断下

此时骚操作就来了,接下来就开始计算sha256了,那么明文基本就已经存在内存中,那么尝试直接从内存中查找flag

007.jpg

非常轻松的就找到flag为flag{plaintext_secrets_are_the_best}

此时计算一下找到的这个flag的sha256为edfc492f382f96b9f2a8838f911c11609585fd762fe4264dd18de26acf355462,与网页的一致,说明成功了

第二题

第二题的方法和第一题一模一样

008.jpg

可以直接通过内存查找到flag为flag{doing_crypto_like_a_pro},经过sha256后也与网页中的一致

第三题

第三题依然可以使用相同的方法,就是wasm文件比较大,等待时间会久一点

009.jpg

找到的flag为flag{requesting_urls_be_like},经过sha256后也与网页中的一致

那么第三题有没有没那么卡的方法呢?那也是有的

在【wasm_exec.js】的【syscall/js.copyBytesToGo】方法内下一个断点,刷新后很快就断下来了,此时的src就是原文flag

010.jpg

也可以直接看到flag

三题都水完了,结束!!!

免费评分

参与人数 6威望 +1 吾爱币 +25 热心值 +5 收起 理由
coderyl + 1 + 1 我很赞同!
ioyr5995 + 1 + 1 用心讨论,共获提升!
oliverchn + 1 热心回复!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Carinx + 1 + 1 用心讨论,共获提升!
ZenoMiao + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 漁滒 发表于 2025-7-25 16:04
swweb 发表于 2025-7-25 12:36
怎么看出来是go语言写的

通过胶水语言的内容格式,而最明显的就是有Go这个关键变量
 楼主| 漁滒 发表于 2025-7-25 11:38
geesehoward 发表于 2025-7-25 10:48
这就是预期解吧,哈希校验本来就不可逆,这么长的flag爆破也不现实。内存查找应该就是正解

是这么个说法,但是我感觉从题目的提示来看,作者更可能希望使用ida等工具分析生成逻辑
scz 发表于 2025-7-28 11:34
fwu 发表于 2025-7-25 17:34
那有方案可以阻止调试 wasm 吗?比如校验时间戳啥的😂

去年看过gaze.run的wasm,它那个就带一些时间戳检查,wasm动态导出函数名每天都不同,反调试手段之一。这些动作确实会增加调试负担。但猫鼠游戏中,很难说谁有绝对把握。看你想付出多大代价了。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
fwu + 1 + 1 我很赞同!

查看全部评分

三滑稽甲苯 发表于 2025-7-25 10:20
三个都可以通过查内存得到答案,不知道预期解是怎么做的
Jonny0927 发表于 2025-7-25 10:43
最近遇到好多用wasm方案处理的站点。。。
geesehoward 发表于 2025-7-25 10:48
三滑稽甲苯 发表于 2025-7-25 10:20
三个都可以通过查内存得到答案,不知道预期解是怎么做的

这就是预期解吧,哈希校验本来就不可逆,这么长的flag爆破也不现实。内存查找应该就是正解
wuaikirin 发表于 2025-7-25 11:13
文件太大了,加载的时候直接把我的开发者工具卡闪退了
hsuehly 发表于 2025-7-25 14:30
用go 写wasm 文件大的要死,还不如rust 或者tinygo
Pinus 发表于 2025-7-25 14:42
感谢分享,大佬厉害
lykearth 发表于 2025-7-25 14:55
学到了,我去试试
Daniel2020 发表于 2025-7-25 15:41
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-17 17:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表