워게임 99

[CodeEngn] Crypto Analysis L02

이번 문제는 조금 어려워보입니다. 암호테이블의 갯수가 26개이므로 알파벳에 대응하는 암호테이블로 보입니다 한번 나열해보면 다음과 같습니다. 알파벳과 대응되는 문자열을 찾아보면 q 와 g가 c 와 d로 대응 되는것 말고는 단서가 없습니다. 나머지 자리를 알 방법은 브루트포싱을 제외하면 딱히 없어보입니다. 이러면 남는 자리에 들어갈수있는 알파벳은 e,h,o,r,s,t 입니다. 3번째 자리와 7번째 자리가 같다는것을 고려해서 브루트포싱 알고리즘을 짜야합니다. #include #define CHAR_COUNTA 6 int main() { char str[10] = "?????c?d?"; char chr[6] = { 'e','h','o','r','s','t' }; for (int i = 0; i < CHAR_CO..

워게임/CodeEngn 2022.07.04

[CodeEngn] Crypto Analysis L01

이번 문제는 굉장히 쉬워 보입니다. 문자열만 봐도 뭔가 카이사르 암호로 암호화된듯한 느낌이 들기 때문에 카이사르 암호 암호화/복호화 (jo-gunhee.github.io) 카이사르 암호 암호화/복호화 ex) I love cookie I love cookie START ------------- jo-gunhee.github.io 이 사이트를 통해서 문자열을 해독해보면 26개의 문자열중에서 그나마 정상적인 단어처럼 보이는 19번째 문자열이 바로 정답입니다. 정답: withflowers

워게임/CodeEngn 2022.07.03

[CodeEngn] Basic RCE L12

이번 문제는 다음과 같습니다. 코드 패치문제로 보입니다. 먼저 exeinfope로 열어보겠습니다. 32비트 실행파일이고 어셈블리 프로그래밍된 프로그램인것으로 파악됩니다. 이제 한번 프로그램을 실행시켜보면 다음과 같이 키값을 입력한뒤 Check 버튼을 누르면 키값을 검사하는 방식일것으로 보입니다. About은 그냥 이 프로그램에 대한 간단한 설명을 띄워줍니다. 이제 한번 IDA를 통해서 분석해보겠습니다. 우선 키값을 검사하는 로직을 찾기위해서 관련된 문자열을 먼저 찾아봤습니다. 가운데 문자열을 보면 아까전에 프로그램을 실행시키면 나오는 메세지박스의 이름인것을 알수 있습니다. 그러므로 이 문자열이 쓰이는 함수로 진입하면 키값을 검사하는 로직도 찾을수 있을것입니다. 그리고 다른 문자열들도 뭔가 관련되어보이는 ..

워게임/CodeEngn 2022.07.03

[CodeEngn] Basic RCE L11

이번 문제는 다음과 같습니다. 먼저 주어진 실행파일을 exeinfope로 열어봐야합니다. 32비트 기반 실행파일에 UPX 패킹이 되어있습니다 일단 프로그램을 실행시켜보면 다음과 같이 확인을 누르면 키파일을 체크한다고 한뒤 확인버튼을 누르면 파일을 찾을수 없다는 메세지박스가 나오면서 프로그램이 종료됩니다. 이제 정확한 분석을 위해 x32dbg로 분석해보겠습니다. F9를 한번 눌러서 실행시켜보면 pushad로 시작하는 언패킹 루틴이 나옵니다. 여기서 F8을 한번 눌러서 진행한뒤 esp 주소에 하드웨어 중단점을 걸어줍니다. 이 다음에 F9를 눌러서 실행시키면 popad 바로 아래에서 중단합니다. 이제 여기에서 스택에 푸쉬되는 3개의 값들이 바로 StolenByte 입니다. 이유는 아래에 있는 jmp문으로 OE..

워게임/CodeEngn 2022.07.03

[CodeEngn] Basic RCE L10

이번 문제는 다음과 같습니다 먼저 주어진 실행파일을 exeinfope로 열어보겠습니다. 32비트 기반 실행파일에 aspack 이라는 패킹이 되어있다는것을 알수 있습니다. 우선 프로그램을 한번 실행해보면 다음과 같은 화면이 나옵니다. 이름과 시리얼값을 입력할수 있는 텍스트박스가 보이는데 문제는 이 텍스트박스에 아무것도 입력되지 않습니다. 이것이 왜이런지, 그리고 어떻게 등록성공으로 가는 분기를 찾을수 있을지는 분석을 해봐야 할것 같습니다. 이제 x32dbg를 통해서 분석해보겠습니다. 먼저 F9를 통해서 한번 실행해주면 다음과 같이 pushad로 시작하는 부분이있습니다. 한번 F8을 눌러준뒤 esp주소를 덤프따라가기한뒤에 하드웨어 중단점을 설정해줍니다. 그리고 나서 F9를 눌러서 실행해주면 다음과 같이 po..

워게임/CodeEngn 2022.07.02

[Reversing.kr] ImagePrc 풀이

이번 문제는 실행파일 하나가 주어집니다. 이 프로그램을 열어보면 다음과 같이 공백에 Check라고 되어있는 버튼 하나가 있습니다 이 공백에는 아무거나 쓸수 있습니다. 그리고 Check 버튼을 눌러보면 Wrong이라는 메세지박스가 출력됩니다. 먼저 exeinfope로 열어보면 32비트 실행파일에 비주얼 C++로 작성되었고 별다른 패킹은 없습니다. 그럼 IDA로 본격적인 분석을 해보겠습니다. 프로그램에 대해서 생각해보면, 흰색화면에 그림을 그릴수 있고 그 그림을 통해서 검사를 한다는것을 보면 윈도우 api를 통해서 그림을 생성하고 그 그림을 검사하는 루틴이 있을것입니다. 그 루틴을 찾기위해서 먼저 아까전에 메세지박스로 출력되었던 Wrong이라는 문자열을 찾아봐야합니다. 다음과 같이 Wrong이라는 문자열과 ..

[Reversing.kr] Replace 풀이

이번 문제에서 주어진 파일은 실행파일 하나입니다. 별다른 readme.txt 파일없이 실행파일 하나만 있어서 어떤것을 해결해야 하는건지 막막하지만 일단 실행시켜보겠습니다. 프로그램은 이런 구조로 이루어져있습니다. 특정 값을 입력해서 Wrong에서 Currect 와 같은 문자열로 바뀌게하는것이 목표일것 같습니다. 그런데 아무값이나 입력해보면 프로그램이 그냥 종료된다는것을 알수 있습니다. 이것이 원래 그런건지 아님 어떤 오류인지 잘 모르기 때문에 일단 분석을 진행하면서 알아보겠습니다. IDA로 분석하다보면 문자열을 찾는 기능을 사용하는데 Wrong은 발견하지 못했지만, Currect! 라는 문자열이 보입니다. 한번 이 문자열이 쓰인곳으로 진입해보면 다음과 같은 구조를 하고있습니다. 메세지박스에 있는 텍스트를..

[Reversing.kr] Music Player 풀이

이번 문제에서 주어진 파일은 다음과 같습니다. DLL 파일과 실행파일, readme.txt파일입니다. 먼저 readme.txt파일을 열어보면 문제 설명이 나와있는데, MP3 플레이어에 1분 제한이 있다고 합니다. 이 1분 제한 검사루틴을 우회하면 flag를 보여준다고 하네요 우선 exeinfope로 열어보면 32비트 기반에 별다른 패킹은 없다는것을 알수 있고, 비주얼 베이직으로 작성되어있다는것을 알수 있습니다. 우선 프로그램을 실행시켜보면 다음과 같은 구조로 만들어져있습니다. 우선 1분이 넘어가는 mp3파일을 구해서 열어보겠습니다. 열고나면 음악을 재생시킬수 있는데 59초가 되는 순간 다음과같은 메세지가 출력되면서 음악이 멈춥니다. 이제 본격적인 분석을 해보겠습니다. 저는 비주얼 베이직에 대해서 잘 모르..

[Reversing.kr] Easy Unpack 풀이

주어진 문제파일을 열어보면 다음과같은 파일이 주어집니다. readme.txt 파일을 열어보면 다음과 같이 프로그램의 OEP를 찾으라고 합니다. 이 문제의 정답은 OEP의 주소인것으로 보입니다. 우선 exeinfope로 열어보면 32비트 기반에 어떤 패킹이 되어있다는것을 알수 있습니다. 그리고 stud_pe를 통해서 열어보면 rva값이 A04B이고 imagebase는 400000이므로 40A04B가 EP인것을 알수 있습니다. 동적분석을 하기 위해서 x32dbg를 통해서 분석할것입니다. x32dbg를 통해서 연뒤에 F9로 실행시켜주면 예상과 같이 40A04B에서 멈추는것을 볼수 있습니다. 이 부분이 패킹한 실행파일을 다시 디코딩하는 루틴인것으로 보입니다. 보통 이러한 디코딩루틴에서 OEP를 찾는 방법으로는 ..

[Reversing.kr] Easy Keygen 풀이

먼저 문제파일을 열어보면 다음과 같이 실행파일과 redme.txt가 주어집니다. readme.txt를 열어보면 다음과 같이 문제에 대한 간략한 설명이 써있습니다. 이 프로그램에 들어갈 이름을 찾아야 하는데, 시리얼 값이 다음과 같을때의 이름을 알아내야 한다는것으로 보입니다. 우선 프로그램을 exeinfope로 열어보면 32비트 기반에 비주얼 c++로 작성된 프로그램이고, 별다른 패킹은 되어있지 않습니다. 이제 프로그램을 한번 실행 시켜보겠습니다. 실행시키면 이름을 입력받습니다. 아무 이름이나 입력하면 다음과 같이 시리얼값을 입력받습니다. 여기에 아까전에 제공된 시리얼값을 입력하는것일겁니다. 하지만 시리얼값을 입력해보면 프로그램이 바로 종료되므로 제대로 분석하기 위해서 IDA를 사용할것입니다. IDA를 통..

728x90