Without a Break

[Dreamhack] rev-basic-3 본문

Reversing/Wargame

[Dreamhack] rev-basic-3

와븨 2023. 8. 16. 20:44

 

 

문제 파일을 디버거로 실행하면 위와 같이 뜬다.

 

 

"correct"가 출력되는 입력값을 찾아야하니 문자열로 가보자

 

 

correct가 있는 위치로 이동하면

위와 같은 위치로 이동한다.

어셈블리 코드를 확인해보면 test eax,eax에서 입력값과 정답을 비교하는 것을 확인할 수 있었다.

그 위의 7FF799851000의 위치에 플래그가 있는 것 같으니 이동해보자

 

 

rcx(input값)와 7FF799853000의 값을 한 글자씩 18번 비교한다.

7FF799853000의 위치에 정답이 있는 것 같음

 

 

7FF799853000의 HEX DUMP는 위와 같다.

24개의 문자열이 있고, 이 문자들로 xor 연산을 통해 입력값과 비교한다. 

 

 

따라서 HEX 값을 문자열로 변환시키기 위해서는 역연산을 해야한다.

 

1. (input[i]^i)+(i*2)=str[i]  => 기본 연산식

2. (input[i]^i)=str[i]-(i*2)  => 양변에 -(i*2) 추가

3. input[i]=(str[i]-(i*2))^i  => 양변에 ^i 추가 == 역연산 식

 

 

C를 사용해서 코드를 작성해봄

실행시켜봤더니 플래그가 나타났다!

 

정답!

 

 

 

 

참고

https://mingkang.tistory.com/entry/DreamHack-rev-basic-3-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4

 

[DreamHack] rev-basic-3 문제 풀이

rev-basic-3 문제 문제는 다음과 같다. 해당 파일을 실행했을 때, Input에 틀린 답을 입력했는지 Wrong이 출력된다. Correct를 출력하기 위해 올바른 답을 찾아보자. 풀이 값을 입력받는 곳까지 실행해준

mingkang.tistory.com

 

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

[Dreamhack] rev-basic-6  (0) 2023.08.16
[Dreamhack] rev-basic-4  (0) 2023.08.16
[Dreamhack] rev-basic-1  (0) 2023.08.13
[Dreamhack] rev-basic-0  (0) 2023.08.13
[CodeEngn] Advance RCE L01  (1) 2023.05.23