rev-basic-3 풀이

2021. 10. 28. 16:26Dreamhack Wargame

728x90

문제 제목
문제 정보
main() 함수
sub_140001000()

sub_1400011B0(), sub_140001210() 함수들은 별로 중요하지 않은 함수이기 때문에 분석은 넘어가겠습니다.

 

sub_140001000() 함수를 보면 for문을 24번 돌려서 xor 연산을 하고 있는 걸 알 수 있습니다.

byte_140003000에 뭐가 있는지 확인해보겠습니다.

 

byte_140003000

16진수들이 쭉 나열되어있습니다.

저 수들을 연산하는 것 같은데, sub_140001000() 함수의 return값이 1일 때 Correct가 되므로 if문에 나온 조건식을 역연산하여 코드를 짜고 돌리면 FLAG가 나올 것 같습니다.

코드는 C++로 작성해보겠습니다.

 

#include<cstdio>
#include<iostream>
using namespace std;

char arr[24]={0x49,0x60,0x67,0x74,0x63,0x67,0x42,0x66,0x80,0x78,0x69,0x69,0x7B,0x99,0x6D,0x88,0x68,0x94,0x9F,0x8D,0x4D,0xA5,0x9D,0x45};
char flag[24];

int main(){
	for(int i=0;i<24;i++){
		flag[i]=i^(arr[i]-2*i);
	}
	for(int i=0;i<24;i++){
		cout<<flag[i];
	}
}

FLAG 획득 완료
문제 풀이 성공

 

728x90

'Dreamhack Wargame' 카테고리의 다른 글

rev-basic-5 풀이  (0) 2021.11.03
rev-basic-4 풀이  (0) 2021.10.29
rev-basic-2 풀이  (0) 2021.10.28
devtools-sources 풀이  (0) 2021.09.05
php-1 풀이  (0) 2021.09.05