본문 바로가기

Hacking/Reversing

CodeEngn_basic_7

Basic RCE L07

 

컴퓨터 C 드라이브의 이름이 CodeEngn 일 경우 시리얼이 생성될 때 CodeEngn은 'ß 어떤 것'으로 변경되는가

 


 

문제 파일 실행 화면

 

 

Serial 값을 입력 받고

 

 

틀리면 에러 창을 출력한다.

올바른 Serial 값을 찾아야 한다. 


이번 문제 파일은 Ollydbg로 해당 문제 파일을 열고 살짝만 내리다 보면 간단하게 에러, 성공 출력을 찾을 수 있기 때문에 문자열의 비교문도 비교적 간단히 찾을 수 있었다.

 

 

EAX와 0을 비교하여 EAX가 0이면 성공을 출력하고 아니면 에러를 출력한다.

EAX는 역시 함수의 리턴 값을 저장하기 때문에 위에서 call을 이용한 함수에서 받아올 것이다. 오른쪽에 주석으로 ConcatString이라는 말로 문자열을 이어주는 함수가 총 3개 정도 있었다. 

 

 

그리고 마지막으로 IstrcmpiA라는 함수를 출력하는데 인자를 String2, String1로 주는 것으로 보아 저 부분에 비교 문자열이 들어갈 것이다.

CMP EAX, 0을 하는 부분에 브레이크를 건 뒤에 프로그램을 실행( f9 )시켜 대충 AAAAAAA라는 문자열을 넣어보도록 한다.

 

 

위와 같이 예상대로 문자열을 합쳐주는데 가운데에 혼자만 한글인 것이 아마 지금 우리가 사용 중인 C드라이브의 이름을 이어 붙인 것일 것이다.

String2에는 입력값이, String1에는 비교 값이 있으니 문제에서 원하는 바를 맞추기 위해서 C드라이브의 이름을 바꿔서 다시 진행하기로 했다.

 

이름을 바꿔준 뒤에 다시 실행했더니

 

 

위와 같이 원래 한국어로 적혀있었던 부분이 영어로 바뀌었다 이 부분이 우리가 원하는 문제의 답일 것이다.

 

- CodeEngn에서 언급한 ß 는 아마 앞에 붙은 자투리 문자열일 것이니 이 부분은 무시해도 된다.

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

CodeEngn_basic_9  (0) 2020.06.14
CodeEngn_basic_8  (0) 2020.06.14
CodeEngn_basic_6  (0) 2020.06.11
CodeEngn_basic_5  (0) 2020.06.09
CodeEngn_basic_4  (0) 2020.06.07