본문 바로가기

[Riversing]/[코드엔진] BASIC

[코드엔진] basic16

코드엔진 사이트에 들어가 basic16 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn)

 

 

14, 15번과 비슷한 문제인 듯 하다.

 

프로그램을 실행시켜보자.

 

이름과 패스워드를 입력받는 간단한 콘솔프로그램이다.

이전 문제들과 다른 점이라면 패스워드를 입력받은 뒤 null 값을 생성한다는 것과,

패스워드가 틀리면 프로그램이 종료된다는 것이다.

 

Exeinfo PE 로 분석 ㄱㄱ

 

 

패킹은 되어있지 않다.

Dev-C++ 로 컴파일되어있다.

 

그렇다면 Ollydbg로 정확한 분석 ㄱㄱ

 

프로그램에 사용된 문자열을 찾아 분기점으로 이동해보자.

 

 

분기점으로 이동 ㄱㄱ

 

패스워드를 입력 받고

0040159F 주소에서 EAX와 어떤 값을 비교한 뒤, good job쪽으로 분기한다.

 

지금까지의 경험으로 보았을 때 eax 값은 내가 입력한 패스워드 값이고, 

비교값은 프로그램의 패스워드 일 것이다.

 

0040159F에 bp를 걸고 진행(F9)해 보았다.

 

위에서 예상 했듯이 내가 입력한 55 라는 값이 16진수의 형태(37) 로 EAX에 저장되어 있었다.

 

그렇다면 E4C60D97 의 10진수 값이 패스워드 일 것이다.

확인 ㄱㄱ

깰끔하게 성공!

'[Riversing] > [코드엔진] BASIC' 카테고리의 다른 글

[코드엔진] basic18  (0) 2020.04.06
[코드엔진] basic17  (0) 2020.04.04
[코드엔진] basic15  (0) 2020.04.04
[코드엔진] basic14  (0) 2020.04.01
[코드엔진] basic13  (0) 2020.04.01