18/09/28-3-BugKu-逆向-easyeasy-200(LCTF)
Posted fingerprint
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18/09/28-3-BugKu-逆向-easyeasy-200(LCTF)相关的知识,希望对你有一定的参考价值。
0x00
题目链接:https://pan.baidu.com/s/1p684GHsV_FMrBs-is-eO1g 提取码:bdg9
0x01
Java层分析
Format类中的form方法截取app中输入字符串的第5位到第38位,然后传入Native层的原生函数,猜测截取的是输入的flag{xxxxx}中的xxxxx。
0x02
native层分析
1)
在IDA中查看字符串发现base64的编码表,以及疑似密文的“dHR0dGlldmFodG5vZGllc3VhY2VibGxlaHNhdG5hd2k.”,将最后的"."换成“=”进行base64解密得到“ttttievahtnodiesuacebllehsatnawi”。
2)
在进行base64加密前对传入的xxxxx进行处理,分析是将xxxxx首尾置转(1234变为4321)。
1 v20 = __readgsdword(0x14u); 2 src = (const char *)(*(int (__cdecl **)(int, int, _DWORD))(*(_DWORD *)a1 + 676))(a1, a3, 0); 3 if ( !src ) 4 return 0; 5 dest = (char *)operator new[](0x21u); 6 strcpy(dest, src); 7 sub_8700((int)&v19, (char *)&unk_236F3); 8 v5 = strlen(dest) - 1; 9 if ( v5 ) 10 { 11 v6 = 1; 12 do 13 { 14 v7 = dest[v6 - 1]; 15 dest[v6 - 1] = dest[v5]; 16 dest[v5--] = v7; 17 v8 = v6++ < v5; 18 } 19 while ( v8 ); 20 }
则传入的xxxxx即为“iwantashellbecauseidonthaveitttt”,即可得到flag。
以上是关于18/09/28-3-BugKu-逆向-easyeasy-200(LCTF)的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 逆向用途 | Android 逆向原理