본문 바로가기

WHOIS/Reversing

Whois 5주차 리버싱 문제 풀이 과제

1. rootME.exe

 

바이너리를 x32dbg로 연 다음 string 값을 확인해보면 다음과 같다.

 

여기서 "Gratz man :)" 문자열을 출력해주는 루틴으로 들어가보면,

 

 

사용자가 입력한 값이 "SPaCIoS" 면 "Gratz man :)"이라는 문자열을 출력해주고, 아니면 "wrong password"를 출력해준다. 

 

 

위 "SPaCIoS" 문자열을 넣어주면 정상적으로 FLAG가 출력됨을 확인 할 수 있당

 

----------------------------------------------------------------------------------------------------------------------

 

2. EasyReverseMe.exe

 

문제를 실행시켜 보면 다음과 같다.

 

 

대충 값 입력 해서 맞으면 FLAG 주는 문제 같다. 바로 디버거로 까보자

 

string 값을 확인 해보면 위 문자열을 출력해주는 루틴의 주소를 알 수 있다.

바이너리를 처음 실행할때 출력해주는 문자열을 출력해주는 루틴을 이동하면 다음과 같이 나온다.

 

먼저 0x49(73)과 값이 같으면 첫 stage를 통과 한다.

 

그 다음은 문자열을 맞춰주면 된다.

 

어셈을 보면 알겠지만 puts로 "저는 지금 무슨 생각을 하고 있을까요? 문자열을 출력해준 뒤 fgets로 사용자로 부터 입력을 받은 다음 strcpy 함수로 "I'm so hungry\n"과 검사하여 둘이 같으면 "훌륭해요!"를 출력해줌을 확인 할 수 있다.

 

 

그러고 마지막으로 랜던값 하나를 맞춰주면 문제가 풀린당 

 

사용자로 부터 scanf로 입력 받은 값과 랜덤값을 cmp 문으로 비교하는데 우선 사용자 입력 값은 [rbp-c]로 eax 담고 랜덤값은 [rbp-0x8]로 비교하기 때문에 rbp-8에 들어있는 값을 확인하여 input으로 주면 된다.

 

보니깐 다음과 같이 값이 들어가 있음을 확인 할 수 있다.

 

이 값을 10진수로 변환해서 넣어주면,

 

다음과 같이 FLAG를 얻을 수 있다.

 

'WHOIS > Reversing' 카테고리의 다른 글

Whois 4주차 리버싱 핸드레이 과제  (0) 2021.10.10