문제 설명
문제 파일을 실행하면 이렇게 input을 입력하라는 게 뜬다.
이 상태로는 문제를 풀 수 없기 때문에, IDA에 파일을 넣어 본다.
코드가 이런 식으로 보여진다.
딱 봐도 컴퓨터구조 시간에 배웠던 어셈블리어... 인 것 같다.
IDA 프로그램은 처음 사용해 보는 건데, F5를 누르면 디컴파일이 된다고 해서 눌러 본다.
int __fastcall main(int argc, const char **argv, const char **envp)
{
char v4[256]; // [rsp+20h] [rbp-118h] BYREF
memset(v4, 0, sizeof(v4));
sub_140001190("Input : ", argv, envp);
sub_1400011F0("%256s", v4);
if ( (unsigned int)sub_140001000(v4) )
puts("Correct");
else
puts("Wrong");
return 0;
}
위와 같은 코드가 나왔다.
sub_140001190 함수로 Input을 출력하고, sub_1400011F0 함수로 입력값을 받는 걸 짐작해 볼 수 있다.
그리고, sub_140001000 함수에 sub_1400011F0을 통해 입력받은 값인 v4를 넣어 봤을 때 맞을 시 Correct, 틀릴 시 Wrong을 출력한다.
보통 이렇게 비교하는 함수에 플래그가 있기 마련이다.
위 코드만을 봤을 땐 각 함수가 뭔지 알 수 없으니까, IDA 환경에서 sub_140001000 함수를 더블클릭해서 살펴 봤다.
strcmp() 명령어로 "Compar3_the_str1ng"과 비교한다고 바로 나온다.
이 문제에서는 correct를 출력하는 문자열 = 플래그 라고 했으니까, 이 문자열이 플래그라는 걸 알 수 있다!
끝~
'SWUFORCE > 워게임 풀이' 카테고리의 다른 글
[wargame.kr] strcmp (web) (0) | 2024.09.24 |
---|---|
[Dreamhack] Broken Password (misc) (0) | 2024.08.27 |
[Dreamhack] file-special-bit (misc) (0) | 2024.08.20 |
[Dreamhack] addition-quiz (misc) (0) | 2024.08.20 |
[Dreamhack] whatsdifferent (misc) (0) | 2024.08.06 |