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   }
View Code

则传入的xxxxx即为“iwantashellbecauseidonthaveitttt”,即可得到flag。


以上是关于18/09/28-3-BugKu-逆向-easyeasy-200(LCTF)的主要内容,如果未能解决你的问题,请参考以下文章

POI和easyExcel

Android逆向系列文章— Android基础逆向

Android逆向-Android基础逆向(2-2)

Android 逆向Android 逆向用途 | Android 逆向原理

什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

iOS逆向系列-逆向APP