CTF - 攻防世界 - mobile新手 - app2

App2 下载后还是拖到模拟器安装:

反编译一下,几个重点关注的文件:

翻看了一圈儿,大概是这样纸的:

1.接收输入参数,传到SecondActivity:

 2.SecondActivity中有一个判断,对接受到的输入参数进行某种操作(doRawData)后等于VEIzd/V2UPYNdn/bxH3Xig==

 3.doRawData在Encryto这个类中:

但是反编译代码里面找不到doRawData这个函数的具体实现,网上搜了下,说需要把so文件拖到IDA里面去看。

好吧,IDA咱还是勉强用过的,在IDA中找到doRawData函数的代码(IDA的基本使用可参考:https://www.cnblogs.com/sallyzhang/p/13328333.html

然后,就没有然后了。。。看不懂这段代码在干啥子。

没想到才到初级选手的round2就跪了,所以今年的CTF报名没我是有原因的~

    

看了一下网上的提示,是AES加密,解密结果:

然鹅,输入flag并木有成功,我。。。。又网搜了一把,说是要解密FileDataActivity里面的密文:9YuQ2dk8CSaCe7DTAmaqAA==

再次解密,成功。又翻了一下反编译的代码,并木有发现哪里有调用FileDataActivity的逻辑>_<。。所以SecondActivity中的密文是用来混淆视听的?还是为了教育新手要多翻翻源码~真的是用心良苦呢~

 

本文与本人博客园的博客是同步的,博客园地址:https://www.cnblogs.com/sallyzhang/p/14738768.html

竞赛题目#include <cstdio> #include <cstring> #include <ctype.h> #include <cstdlib> #include <cmath> #include <climits> #include <ctime> #include <iostream> #include <algorithm> #include <deque> #include <vector> #include <queue> #include <string> #include <map> #include <stack> #include <set> #include <numeric> #include <sstream> #include <iomanip> #include <limits> #define CLR(a) memset(a, 0, sizeof(a)) using namespace std; typedef long long ll; typedef long double ld; typedef unsigned long long ull; typedef pair <int, int> pii; typedef pair <ll, ll> pll; typedef pair<string, int> psi; typedef pair<string, string> pss; const double PI = 3.14159265358979323846264338327; const double E = exp(1); const double eps = 1e-6; const int INF = 0x3f3f3f3f; const int maxn = 1e6 + 5; const int MOD = 1e9 + 7; int main() { int n; cin >> n; vector <int> v; int num; for (int i = 0; i < n; i++) { scanf("%d", &num;); v.push_back(num); } cin >> n; for (int i = 0; i < n; i++) { scanf("%d", &num;); v.erase(v.begin() + num - 1); } vector <int>::iterator it; for (it = v.begin(); it != v.end(); it++) { if (it != v.begin()) printf(" "); cout << *it; } cout << endl; } --------------------- 作者:Dup4 来源:CSDN 原文:https://blog.csdn.net/dup4plz/article/details/79666083 权声明:本文为博主原创文章,转载请附上博文链接!#include <cstdio> #include <cstring> #include <ctype.h> #include <cstdlib> #include <cmath> #include <climits> #include <ctime> #include <iostream> #include <algorithm> #include <deque> #include <vector> #include <queue> #include <string> #include <map> #include <stack> #include <set> #include <numeric> #include <sstream> #include <iomanip> #include <limits> #define CLR(a) memset(a, 0, sizeof(a)) using namespace std; typedef long long ll; typedef long double ld; typedef unsigned long long ull; typedef pair <int, int> pii; typedef pair <ll, ll> pll; typedef pair<string, int> psi; typedef pair<string, string> pss; const double PI = 3.14159265358979323846264338327; const double E = exp(1); const double eps = 1e-6; const int INF = 0x3f3f3f3f; const int maxn = 1e6 + 5; const int MOD = 1e9 + 7; int main() { int n; cin >> n; vector <int> v; int num; for (int i = 0; i < n; i++) { scanf("%d", &num;); v.push_back(num); } cin >> n; for (int i = 0; i < n; i++) { scanf("%d", &num;); v.erase(v.begin() + num - 1); } vector <int>::iterator it; for (it = v.begin(); it != v.end(); it++) { if (it != v.begin()) printf(" "); cout << *it; } cout << endl; } --------------------- 作者:Dup4 来源:CSDN 原文:https://blog.csdn.net/dup4plz/article/details/79666083 权声明:本文为博主原创文章,转载请附上博文链接!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值