【Re】36C3CTF xmas_future

这是一道wasm的逆向题。
先分析给的js文件
在这里插入图片描述
存在一个check函数里面调用了wasm.check,传入了两个参数一个是flag,一个是flag的len。接下来就要对wasm进行分析。
先使用开源项目wabt将hxp.wasm文件反编译成C文件hxp.c
项目地址:wabt
但是这c语言还是比较难理解,用gcc将其其编译成x86架构下的目标文件。

gcc -c hxp.c -o hxp.o

先丢到ida中静态分析。发现了check函数。
在这里插入图片描述
里面还有一个hxp2019_check函数跟进去。这个返回值v6不是0就是1刚好和js里的返回值对应了,这应该就是check_flag的函数,查看哪里对v6进行了修改。
在这里插入图片描述这边有个比较,将v8和内存中某处的值进行比较。v8应该是用户输入的flag,那么内存中的值是什么,在查看程序中的字符串时有所发现。
在这里插入图片描述
查看引用。
在这里插入图片描述
发现了和上面内存地址很相近的地方,这块地方存储的是“hxp{}e_seem/agibtrn/ewmsu_rdrxtr_wbe_hkm.oaeyirncm”但是这明显也不是flag,但是看上去已经很接近了,应该是经过了什么变换,感觉应该很简单了,但是分析半天没分析出来咋变的(我太菜了)。回到hxp2019_check函数,上面真的看不太懂,只能碎片化分析。
在这里插入图片描述
这里是对输入flag长度check。
在这里插入图片描述
这里是对flag前4个字符进行check。
在这里插入图片描述

这个猜测是计算偏移的,但是尝试的时候怎么试都不太对,无奈进行动态分析。
开个apache,把文件目录放到/srv/http下(arch系统),然后修改httpd目录。用firefox动态调试。
跟到check函数
在这里插入图片描述
这是check长度的。
在这里插入图片描述
这是check前4个字符的。
在这里插入图片描述
这里发现那串字符串变换的代码,分析了下运算iter先和1337相乘再和内存中某值进行异或,等下不就是这个吗。
在这里插入图片描述
然后查了下运算优先级,发现乘法运算优先级比异或高,我???为什么会有这种错觉,算了就当学了波动态调试吧,唉。
把内存数据提取一下,一行就解决了。
在这里插入图片描述
这题可以作为一个wasm入门题来做,学习了一波静态分析和动态分析。

猜你喜欢

转载自blog.csdn.net/github_36788573/article/details/103795899
今日推荐