本帖最后由 ibilibili 于 2026-3-4 12:36 编辑
1.分析
查看wasm内存有字符表,长度64,[a-zA-Z0-9!?]。
ai分析找查表位置
用户要求我用中文回答,并且减少输出,让我自己认真看就行。我需要总结我找到的关键信息,用中文简洁地回答。
让我回顾一下我找到的关键信息:
查找表转换:我找到了查找表访问位置:
第15655行:i32.load8_u offset=1295903 - 用于ASCII转换
第15717行:i32.load8_u offset=1295903 - 用于ASCII转换
数据流:从UID输入 → 数组生成 → 查找表转换为ASCII → WAV文件构造
2.获取flag
1、搜索"i32.load8_u offset=1295903"下两处条件断点
i32.load8_u offset=1295903
local.set $var1
local.get $var0 下到这一行(右键edit breakpoint)
console.log('$var8.value:', $var8.value, 'ASCII:', String.fromCharCode($var1.value));window.flag.push(String.fromCharCode($var1.value));
false
i32.load8_u offset=1295903
local.set $var8
local.get $var3 下到这一行
console.log('$var8.value:', $var8.value, 'ASCII:', String.fromCharCode($var8.value));window.flag.push(String.fromCharCode($var8.value));
false
2、在控制台声明数组
window.flag=[]
3、点击生成验证码触发
4、控制台打印flag
"flag{"+window.flag.join('')+"}"
唯一疑惑就是,用上随机数,服务器是怎么验证flag的。 |