Reversing.Kr
-
[reversing.kr] PEPasswordWargame/study 2022. 1. 4. 02:02
1. Description 파일을 다운로드하면 다음과 같이 두 개의 .exe 파일을 확인할 수 있다. 각 파일을 실행해 보자. 1) Original.exe 위와 같이 "Password is ????????????" 문자열을 포함하는 메시지 박스가 출력되고 종료된다. 2) Packed.exe 대화 상자가 나타나고 문자를 입력할 수 있다. 따로 확인 버튼은 없다. 2. Analysis 1) Original.exe 먼저 Original.exe 파일을 분석해보겠다. Exeinfo PE로 패킹 유무를 검사해보았다. 따로 패킹은 되어 있지 않다. 이어서 ida로 파일을 열어보았다. 스택에 선언된 변수들에 대하여 do-while 반복문으로 xor 연산을 진행하고 메시지 박스를 호출한다. 메시지 박스 호출 부분에 bp..
-
[reversing.kr] Position 풀이Wargame/reversing.kr 2021. 5. 22. 20:14
1. 프로그램 분석 첨부파일로 Position.exe와 ReadMe.txt 파일이 있다. 우선 Position.exe를 실행시켜보자. 특정 Name과 Serial을 입력해야 하는 듯하다. ReadMe.txt 파일을 열어보자. 파일에 대한 설명이 나와있다. Serial이 76876-77776일때의 이름을 찾으면 된다. 이름은 네 글자이고 'p'로 끝난다고 한다. 2. Debugging(with x32dbg & Ghidra) x32dbg로 파일을 열어보자. 사용되는 모듈을 먼저 보면 mfc로 작성된 프로그램임을 추측해볼 수 있다. 디버깅이 쉽지는 않을 것 같다. 어떻게 접근해볼지 고민하다가 Wrong이라는 문자열이 있는 것을 보아 적절한 input에 대해 Correct와 같은 문자열이 출력될 것이라 생각했다..
-
[reversing.kr] ImagePrc 풀이Wargame/reversing.kr 2021. 5. 9. 21:10
1. 프로그램 분석 첨부파일을 실행시켜보자. 위와 같이 창이 하나 나타나는데, 아래와 같이 그림판 같은 기능을 한다. 하단의 Check 버튼을 눌러보자. 그러자 위와 같이 Wrong이라는 문구를 출력하는 메시지 박스가 나타난다. 무언가 그려진 그림이 특정 조건을 만족시켜야 하는 듯하다. 2. Debugging(with x32dbg) x32dbg로 ImagePrc.exe 파일을 열고, MessageBox API에 BP를 설정한 후 실행시키고 Check 버튼을 누르면 다음과 같이 BP에 적중한다. 스크롤을 조금 더 올려보자. 스크롤을 올려보면 004013AA의 jne 명령어에 의해 Wrong 메시지 박스를 호출하는 루틴으로 점프하는 것을 확인할 수 있다. byte 단위로 무언가를 비교하는데 빨간 표시를 한 ..
-
[reversing.kr] Replace 풀이Wargame/reversing.kr 2021. 3. 9. 15:04
1. 프로그램 분석 우선 PEiD에 집어넣어보자. 위와 같이 단순한 Visual C++로 작성된 프로그램임을 확인할 수 있다. 프로그램을 실행해보자. 위와 같은 윈도우가 나타난다. 아무 값이나 입력해보려고 했지만 숫자가 아닌 값이 input으로 입력으로 들어올 경우 나타나지 않으며, 임의의 숫자를 넣고 Check 버튼을 누르면 프로그램이 비정상적으로 종료된다. 바로 OllyDbg를 통해 분석을 해보자. 2. Debugging(with OllyDbg) 프로그램을 실행하기 전에 Ctrl+N을 이용해 사용되는 API들을 살펴보자. 위와 같이 DialogBox 관련 API들이 있는 것으로 보아, 대화 상자 형태의 윈도우 임을 알 수 있다. Check 버튼을 눌렀을 때 GetDlgItemInt를 통해 입력 값을 ..
-
[reversing.kr] Music Player 풀이Wargame/reversing.kr 2021. 2. 9. 20:31
1. 프로그램 분석 다음과 같이 3개의 첨부된 파일이 있다. 일단 ReadMe.txt파일을 열어보자. 다 읽어봤으면 Music_Player.exe를 실행시켜 보자. 위와 같은 윈도우가 나타난다. 말 그대로 MP3 Player의 기능을 수행하는 듯하다. Open 버튼을 클릭하면 파일 열기 대화 상자가 나타나는데 임의의 mp3 파일을 선택한 후 재생 버튼을 눌러보자. 위와 같이 1분이 지나면 1분 미리듣기만 가능하다는 메시지 박스가 출력된다. ReadMe.txt 내용을 바탕으로 이번 문제에서는 1분이 지나도 정상적으로 노래가 재생되도록 패치를 해야 한다. 2. Debugging 디버깅을 진행하기에 앞서 PEiD에 해당 프로그램을 넣어보자. 해당 프로그램은 Visual Basic으로 작성된 것을 확인할 수 있..
-
[reversing.kr] ransomware 풀이Wargame/reversing.kr 2021. 1. 8. 17:19
1. 프로그램 분석 프로그램을 다운로드하여 압축을 풀면 다음과 같이 세 가지 파일이 있는 것을 확인할 수 있다. 우선 readme.txt를 열어보자. file을 decrypt하라고 한다. 이제 run.exe를 실행시켜보자. file이 암호화 되어 있고 적절한 key를 입력하면 해당 key 값으로 파일을 복호화하는 구조의 프로그램인 것 같다. 위와 같이 임의의 키를 입력하였을 때 위와 같은 문구가 출력된다. 과연 파일이 복구되었는지 file에 exe 확장자를 붙여서 실행해보자. 위와 같이 당연하게도 "maple19out"으로는 파일 복호화가 안된 것을 알 수 있다. file 자체가 잘못된 키 값으로 복호화가 되었으므로, 새로 파일을 다운로드하고 디버거를 통해 디버깅을 해보자. 2. Debugging(wit..
-
[reversing.kr] Easy ELF 풀이Wargame/reversing.kr 2021. 1. 5. 13:29
본래는 dreamhack.io의 hash-browns 문제를 풀려고 했는데 리눅스 환경에서의 리버싱은 익숙하지 않다. 문득 reversing.kr의 100점짜리 문제인 Easy ELF가 떠올랐고, 풀기 위해 다양한 방법을 시도해보았다. - gdb로 접근 많은 사람들이 리눅스 환경에서 gdb를 이용하여 디버깅을 한다고 하였다. 보통 file (filename) 명령어로 symbol 테이블 정보를 받아오고 disas main과 같은 명령어를 통해 바로 main 함수 쪽 어셈블리 코드를 확인하는데 symbol table이 없다는 문구가 나왔다. 알고 보니 gcc compile 옵션에 -s를 추가하면 symbol table이 제거되는 효과가 있다고 한다. readelf 명령어를 통해 EP를 찾은 후 해당 주소를..
-
[reversing.kr] Easy Unpack 풀이Wargame/reversing.kr 2020. 12. 13. 15:17
1. 프로그램 실행 reversing.kr에서 Easy Unpack을 다운로드하여 실행시켜 보자. 위와 같이 빈 창이 나올 뿐 다른 어떤 동작도 하지 않는다. 폴더내에 있는 ReadMe.txt를 읽어보자. Find the OEP. 즉 Original Entry Point를 찾을 것을 요구한다. 문제의 제목을 보면 알 수 있듯이, 해당 프로그램은 실행 압축되어있고 본래의 entry point를 찾는 것이 문제의 목적인 듯하다. 2. Debugging(with x32dbg) 실행하자마자 401150으로 jump 하는 부분이 있고, 해당 부분으로 jump를 하면 다음과 같다. 바로 entry point가 나와 버린다... x32dbg 옵션에서 시스템 중단점을 체크 해제해뒀을 때 위와 같이 OEP로 넘어가기 직..