吾爱破解论坛 09月12日
GitHub WebAssembly 逆向工程挑战赛解析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文解析了GitHub上的一项WebAssembly逆向工程挑战赛。该挑战赛包含三个题目,要求参赛者通过SHA256哈希值反推出原始flag。通过分析WASM文件和胶水代码,利用Go语言的crypto/sha256包,成功在内存中找到flag,并验证其正确性。挑战赛难度适中,适合有一定逆向工程经验的爱好者尝试。

🔍 挑战赛包含三个题目,要求通过SHA256哈希值反推出原始flag,难度适中。

🔧 通过分析WASM文件和胶水代码,发现使用Go语言的crypto/sha256包计算哈希值。

💾 成功在内存中找到flag,并验证其SHA256哈希值与题目中一致,证明找到的flag正确。

⏱️ 第三题WASM文件较大,通过在胶水代码syscall/js.copyBytesToGo方法下断点,快速找到flag,提高效率。

原创 吾爱pojie 2025-07-25 11:52 北京

最近在群聊中有群友分享了一条连接,是github上创建的一个WebAssembly 逆向工程挑战赛,可以看到作者允许公开发布答案,所以有了这一份水贴。

作者坛账号:漁滒

前言

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

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

再查看一下网站的FAQ

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

第一题

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

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

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

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

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

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

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

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

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

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

第二题

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

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

第三题

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

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

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

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

也可以直接看到flag

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

-官方论坛

www.52pojie.cn


👆👆👆

公众号设置“星标”,不会错过新的消息通知

开放注册、精华文章和周边活动等公告


图片

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

WebAssembly 逆向工程 SHA256 GitHub Go语言
相关文章