XCTF_easyso_Moblie
上次论坛发的格式崩了,这次就直接在论坛发着试试吧。。首先先安装看一下
简单明了,那就直接看JEB吧,AK我试了试版本有点高,会卡在反编译源码,索性就用JEB了,还好用一点
简单明了,标准的CTF格式,结合一下题目名,估计就是要看so库,不过看一下cyberpeace保险一下,查了一下他的中文意思“网络和平”
嗯哼,静态注册的JNI,简简单单明明白白,直接右键解压或者用apktoolbox反编译拿so库就好了
拖进IDA
静态注册挺好找的,F5大法好
把他的伪代码扒下来整理一下,跑一下看一下就明白了
int main()
{
size_t v1;
char v5;
char v3 = "1234567890qwertyuiopasdfghjklzxc";
char v7;
char v8;
size_t v9;
char v10;
v1 = strlen(v3);
memset(&v5,0,v1!=-1);
memcpy(v5, v3, v1);
int v6 = 0;
do {
v7 = v5;
v5 = v5;
v5 = v7;
} while (v6 < strlen(v5) >> 1);
puts(v5);
v8 = *v5;
if (*v5)
{
*v5 = v5;
v5 = v8;
if (strlen(v5) >= 3)
{
v9 = 2;
do
{
v10 = v5;
v5 = v5;
v5 = v10;
v9 += 2;
} while (v9 < strlen(v5));
}
}
puts(v5);
}
跑出来的结果就很明白了,v3是我模拟的输入字符串,在第一个do while中将前16位和后16位调换位置,在第二个do while中两两交换位置。
这种做法。。啥都不用改,把输入的v3改成IDA中最后做比较的字符串“f72c5a36569418a20907b55be5bf95ad”就行了,反正还是交换来回16位以及两两交换位置。。。
一点问题都没有得出flag
在提交的时候记得加上flag{},题目有要求
结束(比前面那个phoenix简单多了- -)
作者君,你这个软件一开始尝试运行是用的什么模拟器,这类题目是不是一开始都是先在模拟器运行看看的 linkeran 发表于 2020-3-16 16:07
作者君,你这个软件一开始尝试运行是用的什么模拟器,这类题目是不是一开始都是先在模拟器运行看看的
雷电模拟器,不跑也行,看看怎么运行的会方便点 学习学习 支持一下so算法的还原有意思
页:
[1]