题目给出一个压缩包,解压后得到
那么先检查是否加壳
发现套了一个upx壳,3.95版本,找个工具解壳之后丢进ida
发现大概逻辑就是从_data_start给出的内一长串字符串中找出与v4对应的位置,即为flag-1
直接上脚本
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s = "z}|{zyxwvutsrqponmlkjihgfedcba`_^]\\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$# !\")";
string v4 = "*F'\"N,\"(I?+@";
for(int i = 0; i < v4.length() ; i++ )
{
for(int j = 0 ; j < s.length() ; j++ )
{
if(v4[i]==s[j])
{
cout<<char(j+1);
}
}
}
}
得到flag:
flag{U9X_1S_W6@T?}