buu 刮开有奖

一.查壳,
在这里插入图片描述
二.拖入ida,分析
直接搜字符串完全没头绪,在看了大佬的wp才找到了,关键函数。
在这里插入图片描述
明显那个String就是我们要求的flag,要开始分析程序。
字符串长度为8,同时这个函数对字符串进行了处理,点击进去,贼复杂,拖入编译器执行,看看
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
char a[]={'Z', 'J','S','E','C','a','N','H','3','n','g'};
int sub_4010F0(char a[], int a2, int a3)
{
  int result; // eax
  int i; // esi
  int v5; // ecx
  int v6; // edx

  result = a3;
  for ( i = a2; i <= a3; a2 = i )
  {
    v5 = 4 * i;
    v6 =a[4*i];
    if ( a2 < result && i < result )
    {
      do
      {
        if ( v6 > a[4*result] )
        {
          if ( i >= result )
            break;
          ++i;
          a[v5] =a[4*result];
          if ( i >= result )
            break;
          while (a[4*i] <= v6 )
          {
            if ( ++i >= result )
              goto LABEL_13;
          }
          if ( i >= result )
            break;
          v5 = 4 * i;
        a[4*result] = a[4*i];
        }
        --result;
      }
      while ( i < result );
    }
LABEL_13:
  	a[4*result] = v6;
    sub_4010F0(a, a2, i - 1);
    result = a3;
    ++i;
  }
  return result;
}
int main()
{
	sub_4010F0(a,0,10);
	for(int i=0;i<10;i++)
	{
		printf("%c",a[i]);
	}
	 
	
}
 

执行后,发现变成了这个
3,C,E,H,J,N,S,Z,a,g

三.分析下一个函数。
在这里插入图片描述
这几行是将字符串的345位和678位字符串进行base64的编码,所以熟悉加密算法是很有必要的。
四.看if
在这里插入图片描述
根据这句话,基本能得出7位字符串,JWP1jMp
第一位的字符不知道,但是可以爆破啊,就26个字母是吧,是U,提交就ok

原文地址:https://www.cnblogs.com/YenKoc/p/12779910.html