보안 / AI / 프로그래밍

[Reversing] rev-basic-1 문제풀이 본문

WarGame/DreamHack

[Reversing] rev-basic-1 문제풀이

DevKTW 2021. 2. 23. 16:59
Debugger는 x96dbg 프로그램을 사용했습니다.

먼저 Debugger로 프로그램을 실행해 봤습니다.

그리고 아무 글자나 입력하고, 반응을 살펴보았습니다.

아무 문자열이나 입력해보았다. 우리는 비밀번호가 무엇인지 찾아야 한다.

저번 문제와 동일하게 Wrong 이라는 문자열을 반환하네요.

이번에도 저번 문제와 동일하게 Input을 받는 지점을 살펴보겠습니다.

이번에도 프로그램 흐름이 Correct를 향해야 한다는 느낌이 오시나요?

이번에도 Correct로 흐름이 유지되려면 test eax, eax와 je ... 에서 알 수 있듯이, eax는 0이 되서는 안됩니다.

그러면 test 코드 위에 있는 call을 따라 들어가 보겠습니다.

난잡하게 BP를 전부 걸어버린 모습이다.

이번에는 뭔가 같은 코드들이 반복된다는 느낌이 오는데요.

코드를 잘 보시면 rax를 계속 증가시키면서

movzx eax, byte btre ds:[rcx+rax]를 통해서 eax에 제가 무작위로 입력한 문자열의 rax 번째 문자를 하나씩 가져와서

cmp을 통해 비교하는 것을 알 수 있습니다.

 

cmp에 비교당하는 문자들을 전부 합치면

정답은 Compar3_the_ch4ract3r 임을 알 수 있습니다.


[x96dbg String 검색 방법]

어셈블리코드 바탕 우클릭 -> 다음을 찾기 -> 모든 모듈 -> 문자열 참조

맨아래 검색에 Input을 입력해서 Input과 관련된 String(문자열)을 참조하는 곳을 얻는 모습이다.

'WarGame > DreamHack' 카테고리의 다른 글

[Reversing] rev-basic-2 문제풀이  (0) 2021.02.23
[Reversing] rev-basic-0 문제풀이  (1) 2021.02.22
Comments