<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에 이 값을 넣어주면
답을 찾을 수 있다.