관리 메뉴

HeeJ's

Basic RCE L15 :: CodeEngn/BasicRCE 본문

<CTF>/<CodeEngn>

Basic RCE L15 :: CodeEngn/BasicRCE

meow00 2020. 6. 5. 21:49

문제:

 

파일을 저장했는데 .exe 파일이기에 우선 그냥 실행해보았다.

 

이렇게 Name과 Serial을 넣는 칸이 있는데,

Name은 CodeEngn으로 주어졌고, Serial에 아무 값을 넣어주고 Check를 해보았다.

 

Try Again ! 이라는 문구가 떴다.

이제 이 파일을 분석해보기 위해 Ollydbg로 열어주었다.

그리고, 분기문을 찾아주기 위해 문자열을 검색해 성공, 실패가 나눠지는 곳이 있는지

찾아주었다.

 

 

그랬더니 아까 실패했을 때 뜬 "Try Again !"이라는 문자열과

성공하면 보일 것 같은 "You cracked ..." 문자열이 보인다.

 

그래서 저 문자열로 가서 윗부분에 CMP 구문이 있는지 찾아주었다.

그 위치에서 성공, 실패를 가르는 분기문이 될 것이기 때문이다.

 

CMP 구문을 찾아서 보면

EAX와 DWORD PTR DS:[45B844]를 비교하는데,

DWORD는 Double WORD로 4byte를 뜻하고,

DS는 데이터 세그먼트,

 

즉 DWORD PTR DS:[45B844]는

DATA 영역의 45B844 주소의 4바이트 공간의 을 뜻함

 

CMP 구문에 bp를 걸어주고 실행시켜보았다.

 

다시 아무 값이나 입력해 주면

EAX 값에 Serial에 입력해준 값이 들어가 있는 것을 알 수 있다.

 

그래서 45B844의 주소 값을 찾아주기 위해

 

Dump를 따라가 Memory address 값을 확인해주었다.

 

그러면 이 address에 들어있는 값을 찾을 수 있는데,

메모리 덤프 주소는 리틀 엔디언 방식으로 읽어주어야 하기 때문에

00 00 61 60 이 된다.

 

Serial은 10진수로 넣어주어야 하기 때문에

6160(16)을 10진수 변환해주면

Serial 값을 찾을 수 있다.

 

exe 파일을 실행시켜 name과 Serial을 입력해주면

이렇게 serial을 확인할 수 있다.

'<CTF> > <CodeEngn>' 카테고리의 다른 글

BasicRCE L02 :: CodeEngn/BasicRCE  (0) 2021.04.26
Basic RCE L01 :: CodeEngn/BasicRCE  (0) 2021.03.29
Basic RCE L18 :: CodeEngn/Basic RCE  (0) 2020.06.07
Basic RCE L16 :: CodeEngn/Basic RCE  (0) 2020.06.06
Basic RCE L11 :: CodeEngn/BasicRCE  (0) 2020.06.06