이 영역을 누르면 첫 페이지로 이동
caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

페이지 맨 위로 올라가기

caputdraconis

네트워크 관점에서의 클라우드 컴퓨팅을 공부하는 중입니다 :)

CodeEngn.com Basic RCE L01

  • 2020.07.02 16:46
  • Security/Reversing
글 작성자: caputdraconis
반응형

https://codeengn.com/challenges/

 

CodeEngn.com [코드엔진] - Challenges

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰

codeengn.com

위의 사이트에서 풀어볼 수 있는 리버싱 문제다.

 

문제는 이러하다. 첨부된 파일을 다운로드하여 압축을 풀면 01.exe 파일이 있다. 아예 이쪽은 처음이여서,, 맥 환경에서 .exe를 어떻게 해야될지 모르겠던 나는!?!?!

parallels desktop을 이용하여 윈도우 환경을 구성했다.

 

 

 

01.exe를 실행시키면 "하드디스크?를 씨디롬처럼 인식하게 해라~" 뭐 이런 문장이 출력되고 확인 버튼을 누르면

이전에 부탁한걸 못들어줬더니 격한 반응을 보인다. 여기서 프로그램은 종료된다. 

 

흠 그럼 올리디버거를 처음 개시해보자

 

올리디버거에서 01.exe를 오쁜한 모습이다. 위와 같이 01.exe를 어셈블리어 코드로 보여준다. 이를 이용해 분석해보자

 

 

 

우측에 저렇게 문자열이 보인다. 문자열을 이용해 이쯤이 무슨 작업을 하는 부분인지 대충 짐작할 수 있었다.

 

 

00401024 에서 진행하는 CMP 명령을 살펴보면 EAX와 ESI의 값을 비교한다. 

다음 줄에 있는 JE 명령어는 Jump if Equal의 줄임말로서 위에서 비교한 CMP의 결과가 True라면 뒤의 주소값으로 점프한다.

여기서 점프하게 되는 0040103D는 위 사진에서 볼 수 있듯이 "OK, I really think that your HD is a CD-ROM! :p"을 출력하는 부분이다. 

 

즉 저 CMP에서 비교 결과가 False 였다면 점프 없이 그대로 진행되어 "Nah... This is not a CD-ROM Drive!"라는 에러 문구가 출력이 된다.

True라면 위에서 언급한 결과가 나온다. 

 

 

그렇다면 두가지 방법이 일단 눈에 보인다!

첫번째! CMP의 결과가 True가 나오게 바꾸는 방법

두번째! CMP의 결과가 거짓이여도 0040103D로 점프하게 하는 방법!

 

 

첫번째 방법은 그냥 EAX와 ESI를 비교하는 00401024에서 당연히 True가 나올 수 밖에 없는 CMP EAX, EAX로 변경해주는 것이다.

 

변경하고자 하는 명령을 더블클릭하면 위와 같이 바꿀 수 있다.

 

이렇게 바꿔주고 실행을 시켜보면~?

후핳 이렇게 문제가 원하는대로 풀었음을 확인할 수 있다~

 

 

 

 

 

 

두번째 방법으로 풀고자 한다면 위와 같이 JE 명령어를 CMP 결과에 상관없이 점프하는 JMP 명령어로 바꿔주자.

 

결과는 위와 같이 성공이닷

 

 

 

 

 

 

후핳 리버싱 신기하자나~?

 

 

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [써니나타스 Suninatas] 리버싱 reversing No.10

    [써니나타스 Suninatas] 리버싱 reversing No.10

    2020.08.11
  • [드림핵 Dream hack] rev-basic-2

    [드림핵 Dream hack] rev-basic-2

    2020.08.06
  • CodeEngn Basic RCE L02

    CodeEngn Basic RCE L02

    2020.07.03
다른 글 더 둘러보기

정보

caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

  • caputdraconis의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (168)
      • Cloud (3)
      • Computer Network (12)
      • Database (2)
      • Terraform (2)
      • 🥚고리즘 (13)
      • 겅부겅부🙃 (10)
        • Naver CS50 코칭스터디 (2)
        • Machine Learning (1)
        • Computing System (6)
      • 언어&프레임워크 (20)
        • Python (4)
        • Django (10)
        • Node JS (1)
        • C++ (2)
        • Java (1)
        • Flutter (2)
      • Security (76)
        • WebHacking Study (11)
        • 지옥방 스터디 (22)
        • 여름방학 스터디 (2)
        • PWN Study (6)
        • SUA Reversing Study (3)
        • PWN (3)
        • WebHacking (20)
        • Reversing (4)
      • 알고 있으면 도움되지 않을까,,? (23)
      • 일상다반사 (1)
      • 근황 정리 (1)
      • 42 Seoul (1)
        • Setting (1)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 리스트함수
    • 웹해킹.kr
    • old-16
    • Python
    • 파이썬기초
    • 드림핵
    • 파이썬함수
    • 파이썬

    나의 외부 링크

    • Github
    • solved.ac
    • caputdraconis@kakao.com

    정보

    caputdraconis의 caputdraconis

    caputdraconis

    caputdraconis

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © caputdraconis.

    티스토리툴바