관리 메뉴

HeeJ's

Basic RCE L16 :: CodeEngn/Basic RCE 본문

<CTF>/<CodeEngn>

Basic RCE L16 :: CodeEngn/Basic RCE

meow00 2020. 6. 6. 13:29

문제:

16번 문제도 15번과 동일하게 Serial을 찾는 문제로,

일단 실행시켜보았다.

 

이런 실행 창을 얻을 수 있었고,

바로 Ollydbg로 분석해보았다.

 

분기문을 찾기 위해

성공과 실패를 가르는 String을 찾아주었고,

 

 

" Good Job! "이라는 문자열을 더블 클릭해 들어가주었다.

 

위 쪽으로 보다 보면,

CMP구문을 찾을 수 있었고

이 부분에 bp를 걸어준 다음 실행시켜보았다.

 

CMP 구문에서

EAX와 DOWRD PTR SS:[EBP-3C]를 비교해주는 것을 확인하고

(EBP에서 3C를 뺀 메모리 주소에 저장된 값)

값을 입력해주었더니

 EAX에는 내가 입력해 준 값이 들어있는걸 확인할 수 있었고,

EBP는 0070FF28이라는 것을 알 수 있다.

여기서 3C를 빼주면

 

00 70 FE EC 주소의 4byte를 EAX와 비교해야하는 것을 알 수 있다.

이 메모리 주소의 값을 확인하기 위해

 

메모리 어드레스를 확인해주면

 

0070FEEC의 dump 값들을 볼 수 있고,

이는 리틀 엔디안방식으로 읽어주어야 하기 때문에

E4 C6 0D 97임을 알 수 있다.

 

이를 10진수로 바꿔주면

10진수로 된 값을 얻을 수 있고,

파일을 실행시켜 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 L11 :: CodeEngn/BasicRCE  (0) 2020.06.06
Basic RCE L15 :: CodeEngn/BasicRCE  (0) 2020.06.05