-
-
[原创]【2019看雪CTF】Q2赛季 第五题 丛林的秘密 WP
-
发表于: 2019-7-2 00:13 5993
-
安卓题,主要java层代码如下:
有native代码,java层调用了其两个函数sayHello
和check_key
。sayHello
函数返回字串'http://127.0.0.1:8000' ,而check_key
似乎不像校验函数:
再看java层中的loadUrl
和setJavaScriptEnabled
,似乎有猫腻。再细看native代码。
在JNI_OnLoad
函数中调用了地址为B30
的函数,解码了大量数据,并建立了socket,监听8000端口,模拟web服务,有客户端连接后将解码的数据发送到客户端。
数据解码后为html内容,内嵌WebAssembly,html部分内容为(去除了WebAssembly部分):
原来这才是真正的校验交互接口,校验逻辑自然在WebAssembly里。
将WebAssembly写入到文件,转成c再编译,最后反编,得到check_flag
的伪代码如下:
先调用了8个函数对输入的32字节进行异或处理,然后调用xxx
函数进行最终校验,xxx
函数中通过32个32元一次代数方程进行校验,直接解方程得到
即:S0m3time_l1tt1e_c0de_1s_us3ful33
32字节异或的常量值为:
直接异或得到原始输入:
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: