2017 ISCC 全国大学生信息安全与对抗技术竞赛 简单到不行
题目说了是送分题,应该是送分的,非常传统的套路,Java层获取一个RegCode,然后传入native层进行校验

native层的校验,遍历前一半的数据,每一个加5,然后跟对称的数据进行交换

那么我们还原的代码就是从后面开始遍历,遍历后一半,然后跟对称的数据进行交换
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char Key[] = "=0HWYl1SE5UQWFfN?I+PEo.UcshU";
int len = strlen(Key);
for(int i = len - 1; i >= len / 2; i--)
{
Key[i] += 5;
int temp = Key[len - i - 1];
Key[len - i - 1] = Key[i];
Key[i] = temp;
}
printf("%s\n", Key);
return 0;
}
结果
ZmxhZ3tJU0NDSkFWQU5ES1lYWH0=
这很明显的是Base64处理过的,拿去还原
flag{ISCCJAVANDKYXX}
需要注意一下,这题使用了动态注册,使用F5的时候,有些怪怪的,直接找关键的代码就行

跟进去,可以看到动态注册的函数调用,双击过去就是待注册函数表

Last updated