일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- C언어
- sql injection
- abex crackme
- html
- 자바스크립트
- 리버싱
- 리액트
- 웹
- 회귀 수식
- 컴퓨터 구조
- 어셈블리어
- 리눅스
- 보안
- 백준
- 인공지능
- 넘파이
- 해킹
- 웹해킹
- 리버싱 문제
- 알고리즘
- webhacking.kr
- 백준 알고리즘
- 워게임
- 머신러닝
- 리버싱 워게임
- php
- CodeEngn
- writeup
- webhacking
- MySQL
- Today
- Total
인공지능 개발일지
[리버싱] CodeEngn RCE Basic L03 Writeup 본문
안녕하세요! 한동안 개인적으로 바빠서 블로그를 제쳐뒀던 것 같네요.
이제 곧 기말이긴 하지만 전보다는 여유가 생겨서 틈틈이 쓰려고 한다.
사실 이 리버싱 문제도 한 달 전에 푼거라 기억이 가물가물하지만 리마인드 할 겸 써 본다.
1. 문제분석
문제는 아래와 같다. 이 문제를 푸는 데는 2가지 단계가 있다. 첫 번째는 문제 그대로 함수 이름을 찾아서 CodeEngn에 내는 것이고 두 번째는 추가적으로 곧 나올 코드 입력 창에 문자를 맞추는 것이다.
차례대로 스트링 비교 함수부터 봅시다.
3번 문제 자체는 비주얼 베이식에서 스트링 비교 함수가 무엇인지 묻는 문제입니다.
비주얼 베이식이란 MS에서 만든 베이직 프로그래밍 언어의 일종으로 VS 제품군 중 하나이다.
이는 멜론 플레이어, 디버거 등과 같은 "프로그램을 만드는 툴"이다.
(앱과 웹을 개발할 수 있듯이 윈도의 프로그램(. exe)도 개발할 수 있다.
그래서 리버싱도 이러한 프로그램을 분석할 때 종종 사용된다.)
그래서 문제의 뜻은 그냥 첨부된 프로그램을 디버거로 돌려보고 스트링을 비교하는 부분의 함수를 찾으라는 뜻이다.
2. 프로그램 분석
첨부된 프로그램을 다운로드하여 실행하면 아래 메시지가 먼저 뜬다.
확인을 누르면 아래 좌측과 같은 Regcode를 치는 창이 나온다. 여기 아무 문자나 입력해 보면 패스워드가 틀리다는 error 메세지가 뜬다. 비밀번호가 맞지 않다는 걸 보니 맞는 비밀번호가 프로그램 코드 안에 있고 이를 비교하는 함수가 있을 것이다.
해당 코드를 찾기 위해 먼저 디버거로 프로그램을 열어준다. 그러면 아래와 같은 창을 볼 수 있다.
여기서 아까 처음에 본 이상한 메세지 창 문자를 검색하면 아래 코드 부분을 찾을 수 있다.
자세히 보면 위에 뭔가 답으로 의심되는 268~Hs2라는 문자열을 볼 수 있다.
그리고 왼쪽에 어셈블리어를 보면 push로 입력받은 문자열을 vbaStrCmp라는 함수에 인자로 넣는 것을 볼 수 있다.
이를 통해 위 문자열과 입력받은 문자열을 비교하는 함수는 vbaStrCmp임을 알 수 있다.
3. 결과 제출
위에서 찾은 대로 함수 이름부터 CodeEngn에 답을 제출해보면 맞는 것을 확인할 수 있다.
(참고로 정답 제출 시에는 zip으로 압축해서 문제를 식별해 주어야 한다)
제출하면 맞다는 창이 뜬다.
다음으로 처음 봤던 그 프로그램에 찾은 문자열을 입력해보면 성공 메시지가 나온다!
'보안 > 리버싱' 카테고리의 다른 글
[리버싱] CodeEngn RCE Basic L04 Writeup (0) | 2021.12.29 |
---|---|
[리버싱] CodeEngn RCE Basic L02 Writeup (0) | 2021.11.08 |
[리버싱] abex' crackme 4번 Writeup (0) | 2021.10.15 |
[리버싱] abex' crackme 3번 Writeup (0) | 2021.10.12 |
[리버싱] abex' crackme 2번 Writeup (0) | 2021.10.12 |