- rev-basic #02
이전 예제들과 비슷한 유형으로 파일을 실행해 아무값을 입력해줬더니 wrong이 떴다.
IDA에 들어가면 main 화면에 이와 같이 나오고 문자열을 비교해 출력하게끔 하는 함수로 추정할 수 있는 sub_140001000 에 더블 클릭하게 되면 아래와 같은 화면이 나오게 된다.
분석하자면, 뭔가 rax와 12h를 비교해서 rax가 12보다 작지 않을때 jnb명령어를 통해 short loc_140001048 로 점프하는 것 같다.
short loc_140001048에 더블 클릭을 하면 eax에 1을 넣는 다는 내용이 있다.
rax 값이 12를 넘지 않는 경우에는 어떻게 될 지 아래를 보니 위와 같은 화면을 보게 되었고, aC 배열 옆에 주석으로 "C" 있는 것을 보고 flag 값이 여기 있겠구나 싶었다.
aC배열을 더블 클릭하니 위 같은 화면이 나와서 flag 값을 얻을 수 있었다.
입력값을 넣으니 correct 가 출력되었고, 문제를 풀었다.
https://dreamhack.io/wargame/challenges/16/
- easy unpack
처음에는 윈도우10에서 예제를 풀려고 했었는데, 보안 상의 이유로 가상머신에서 윈도우 7 환경에서 풀게 되었다.
다운받은 exe 파일을 실행해보니까 아무 내용도 없는 빈 창이 떴다.
다운받은 파일에는 exe 파일과 메모장이 있는데, 메모장을 열어보니 이 예제는 OEP를 찾는 문제라는 것을 알았다.
+ OEP란?
: OEP는 Orignal Entry Point로 EP는 엔트리 포인트이다. 엔트리 포인트는 운영체제가 사용자 프로그램으로 최초로 제어를 넘기는 지점으로 실행 코드가 최초로 실행되는 지점이라고 생각하면 된다.
OEP는 실제 시작 지점으로 jmp문을 통해서 찾을 수 있다.
OllyDbg를 통해 exe 파일을 열어 주었다.
구글링을 하였을 때 일반적으로 OEP로 점프하는 코드 다음에는 옵코드 0으로 채워져 있는 경우가 있다고 하여 그러한 부분을 찾았더니 jmp 명령어가 있었다. 이부분에 브레이크포인트를 걸었다.
실행시켜 보면 OEP를 찾을 수 있다.
http://reversing.kr/challenge.php
'문제 풀이' 카테고리의 다른 글
[Reversing.kr&CodeEngn] Easy_ELF & Basic RCE L02 (0) | 2022.02.23 |
---|---|
[Reversing.kr & HackCTF] Easy_Keygen & Reversing me (0) | 2022.02.18 |
[2022 Reversing D+15] Dreamhack rev_basic #0, #1 (0) | 2022.02.16 |
[2022 Reversing D+14] abex crackme 01, 02 (0) | 2022.02.15 |
[2022 CTF] 리버싱 - Day 13 (0) | 2022.02.14 |