WebAssembly 逆向工程挑战赛

查看 95|回复 9
作者:漁滒   
@[TOC](WebAssembly 逆向工程挑战赛)
前言
最近在群聊中有群友分享了一条连接,是github上创建的一个WebAssembly 逆向工程挑战赛


001.jpg (43.79 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

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


002.jpg (52.49 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

可以看到作者允许公开发布答案,所以有了这一份水贴
第一题
打开f12,进入到第一题中,可以看到直接显示了sha256的结果


003.jpg (30.66 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

从网络请求中可以看到加载了一个wasm文件【level1.wasm】和对应的胶水代码【wasm_exec.js】
根据胶水代码可以看出是使用go语言编写的


004.jpg (104.33 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

然后多次刷新页面可以发现,得出的结果是不变的,同时在网页中也没有明确的提示为动态的flag,那么可以暂且认为这是一个静态的flag
既然题目是从摘要算法中找到原文,那么使用的摘要算法大概率也是标准算法,虽然不认识go,但是可以问问豆包go怎么计算sha256


005.jpg (56.09 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

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


006.jpg (140.89 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

可以搜索到4处,说明符号名没有被去除,直接在调用处下一个断点,然后刷新,可以成功在断点中断下
此时骚操作就来了,接下来就开始计算sha256了,那么明文基本就已经存在内存中,那么尝试直接从内存中查找flag


007.jpg (230.44 KB, 下载次数: 0)
下载附件
2025-7-25 09:45 上传

非常轻松的就找到flag为flag{plaintext_secrets_are_the_best}
此时计算一下找到的这个flag的sha256为edfc492f382f96b9f2a8838f911c11609585fd762fe4264dd18de26acf355462,与网页的一致,说明成功了
第二题
第二题的方法和第一题一模一样


008.jpg (242.74 KB, 下载次数: 0)
下载附件
2025-7-25 09:46 上传

可以直接通过内存查找到flag为flag{doing_crypto_like_a_pro},经过sha256后也与网页中的一致
第三题
第三题依然可以使用相同的方法,就是wasm文件比较大,等待时间会久一点


009.jpg (267.79 KB, 下载次数: 0)
下载附件
2025-7-25 09:46 上传

找到的flag为flag{requesting_urls_be_like},经过sha256后也与网页中的一致
那么第三题有没有没那么卡的方法呢?那也是有的
在【wasm_exec.js】的【syscall/js.copyBytesToGo】方法内下一个断点,刷新后很快就断下来了,此时的src就是原文flag


010.jpg (246.8 KB, 下载次数: 0)
下载附件
2025-7-25 09:46 上传

也可以直接看到flag
三题都水完了,结束!!!

下载次数, 下载附件

漁滒
OP
  


geesehoward 发表于 2025-7-25 10:48
这就是预期解吧,哈希校验本来就不可逆,这么长的flag爆破也不现实。内存查找应该就是正解

是这么个说法,但是我感觉从题目的提示来看,作者更可能希望使用ida等工具分析生成逻辑
三滑稽甲苯   

三个都可以通过查内存得到答案,不知道预期解是怎么做的
Jonny0927   

最近遇到好多用wasm方案处理的站点。。。
geesehoward   


三滑稽甲苯 发表于 2025-7-25 10:20
三个都可以通过查内存得到答案,不知道预期解是怎么做的

这就是预期解吧,哈希校验本来就不可逆,这么长的flag爆破也不现实。内存查找应该就是正解
wuaikirin   

文件太大了,加载的时候直接把我的开发者工具卡闪退了
swweb   

怎么看出来是go语言写的
rmworld   

ctf还是有意思呀
heigui520   

(⊙o⊙)哇感谢楼主的分享,太厉害啦( ̄□ ̄)
hsuehly   

用go 写wasm 文件大的要死,还不如rust 或者tinygo
您需要登录后才可以回帖 登录 | 立即注册

返回顶部