-
카테고리
-
세부 분야
보안
-
해결 여부
미해결
이문제는 이렇게푸는게나을것같습니다(5초내로풀림)
20.08.21 18:05 작성 조회수 158
0
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#pragma warning(disable:4996)
#pragma section("flag_data", read)
__declspec(allocate("flag_data")) char table[45] = { 102, 124, 124, 107, 78, 117, 17, 87, 100, 69, 114, 2, 80, 106, 65, 80, 6, 66, 103, 91, 6, 125, 4, 66, 125, 99, 2, 112, 76, 110, 103, 1, 98, 91, 106, 6, 18, 106, 115, 91, 69, 5, 113, 0, 76 };
char flags[45];
void genFlag(int key1, int key2, int key3) {
for(int i = 0; i<45; i++) {
if (i % 3 == 0)
flags[i] = table[i] ^ key1;
else if (i % 3 == 1)
flags[i] = table[i] ^ key2;
else if (i % 3 == 2) {
flags[i] = table[i] ^ key3;
}
}
}
int main() {
int key1;
int key2;
for(int i = 0; i<255;i++)
{
for(int j = 0; j<255;j++)
{
key1 = i;
key2 = j;
key1 ^= key2 ^= key1 ^= key2;
int key3 = (key1-3) ^ (key2+3);
key3 += 10;
key3 &= 0xff;
genFlag(key1,key2,key3);
if(flags[0] == (int)'D' && flags[1] == (int)'I' && flags[2] == (int)'M')
{
printf("Flag : %s\n", flags);
}
}
}
getchar();
}
답변을 작성해보세요.
0
0
장용하
지식공유자2020.08.22
ezthread.exe 파일의 내부 로직을 잘 구현하셨네요.
저 같은 경우는 복잡한 부분은 최대한 안 건드리려다보니 파일 입출력 등이 코드에 포함되어 시간이 많이 소요되지만
능력이 되신다면 하신 것 처럼 직접 구현하시는 방법이 효율적입니다.
답변 2