301 words
2 minutes
Small Counter
Small Counter
題目:
플래그를 생성하는 함수 flag_gen()을 호출하고 플래그를 출력하세요.
플래그 형식은 DH{…} 입니다.
開 Ghidra
把這兩個函式轉成 cpp
#include <stdio.h>#include <string.h>#include <ctype.h>
void flag_gen(char *param_1, char *param_2, int param_3){ char lowercase[27] = "abcdefghijklmnopqrstuvwxyz"; char uppercase[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char shifted_lowercase[27] = {0}; char shifted_uppercase[27] = {0}; int local_24, local_1c, local_20; char local_25;
for (local_20 = 0; local_20 < 26; local_20++){ shifted_lowercase[(local_20 + param_3) % 26] = lowercase[local_20]; shifted_uppercase[(local_20 + param_3) % 26] = uppercase[local_20]; }
shifted_lowercase[26] = '\0'; shifted_uppercase[26] = '\0';
printf("Shifted Lowercase: %s\n", shifted_lowercase); printf("Shifted Uppercase: %s\n", shifted_uppercase);
local_24 = 0; while (local_24 < strlen(param_1)){ local_25 = param_1[local_24];
if (islower(local_25)){ param_2[local_24] = shifted_lowercase[local_25 - 'a']; } else if (isupper(local_25)){ param_2[local_24] = shifted_uppercase[local_25 - 'A']; } else if (isdigit(local_25)){ local_1c = ((int)local_25 * (param_3 + 3)) % 9; if (local_1c < 8 || local_1c > 9){ local_1c += 0x32; } else{ local_1c += 0x28; } param_2[local_24] = (char)local_1c; } else{ param_2[local_24] = local_25; } local_24++; } param_2[local_24] = '\0';}
int main(void){ char local_a8[80]; char flag_part[] = { 0x49, 0x4d, 0x7b, 0x35, 0x30, 0x38, 0x38, 0x38, 0x39, 0x6a, 0x33, 0x32, 0x6a, 0x38, 0x37, 0x6a, 0x39, 0x6a, 0x67, 0x35, 0x34, 0x36, 0x35, 0x30, 0x38, 0x34, 0x30, 0x34, 0x32, 0x38, 0x68, 0x6a, 0x68, 0x69, 0x32, 0x69, 0x69, 0x30, 0x38, 0x68, 0x37, 0x34, 0x69, 0x68, 0x6a, 0x35, 0x33, 0x38, 0x68, 0x35, 0x34, 0x33, 0x6a, 0x37, 0x67, 0x36, 0x6b, 0x35, 0x6a, 0x6b, 0x38, 0x6a, 0x69, 0x68, 0x32, 0x32, 0x66, 0x7d, 0x00}; for (auto const &x : flag_part){ printf("%c", x); } printf("\n"); puts("Nice!"); flag_gen(flag_part, local_a8, 5); printf("\n%s\n", local_a8); return 0;}
執行結果
IM{508889j32j87j9jg54650840428hjhi2ii08h74ihj538h543j7g6k5jk8jih22f}Nice!Shifted Lowercase: vwxyzabcdefghijklmnopqrstuShifted Uppercase: VWXYZABCDEFGHIJKLMNOPQRSTU
DH{389998e56e90e8eb34238948469cecd6dd89c04dce359c345e0b2f3ef9edc66a}
DH{389998e56e90e8eb34238948469cecd6dd89c04dce359c345e0b2f3ef9edc66a}