Correct
를 출력할 수 있는 입력값을 찾고, 해당 입력값을 플래그로 넣으면 된다.
문제파일로 chall0.exe
파일이 주어졌고, 이 파일을 IDA Pro 7.0으로 열어서 디컴파일했다.
어셈블리 코드를 훑어봤을 때 다음과 같이 Input :
을 출력하는 함수를 찾을 수 있었고, Input으로 입력받았을 때 조건에 맞으면 Correct
를 출력하는 것을 알 수 있었다.
__int64 sub_140001100()
{
char v1; // [rsp+20h] [rbp-118h]
memset(&v1, 0, 0x100ui64);
sub_140001190("Input : ");
sub_1400011F0("%256s", &v1);
if ( (unsigned int)sub_140001000(&v1) )
puts("Correct");
else
puts("Wrong");
return 0i64;
}
조건문에서 확인하는 sub_140001000
함수로 이동해보면 다음과 같다.
_BOOL8 __fastcall sub_140001000(const char *a1)
{
return strcmp(a1, "Compar3_the_str1ng") == 0;
}
따라서 strcmp 함수로 비교하는 문자열은 Compar3_the_str1ng
이고, 이것이 플래그이다.
[Dreamhack] rev-basic-2 (0) | 2021.03.15 |
---|---|
[Dreamhack] rev-basic-1 (0) | 2021.03.15 |