워게임 99

[CodeEngn] Basic RCE L17

exeinfope로 확인해보면 델파이로 작성된 32비트 실행파일이고 별다른 패킹은 안되어있습니다. 프로그램을 실행시켜보면 이렇게 구성되어있는데 문제에서 제시하는대로 알파벳 1글자와 시리얼키를 입력해보면 문자를 더 입력해야한다는 문자열이 출력됩니다. 이 문자열이 안뜨려면 이름을 3글자 이상 입력해야하는것을 봐서는 패치가 필요해보입니다. 이 문자열은 이름 길이검사루틴에서 쓰일것이기 때문에 IDA를 통해서 이 문자열이 쓰이는 곳을 찾을수 있다면 검사루틴을 찾을수 있습니다. 이 함수에서 문자열이 쓰이는것을 봐선 이 함수가 검사루틴일것이므로 한번 함수로 들어가보면 다음과 같은 구조를 하고있는 검사루틴을 볼수있습니다. 이 분기가 바로 이름의 길이를 검사하는 분기문인데 분석해보면 입력받은 이름의 길이를 얻은뒤 그 값..

워게임/CodeEngn 2022.07.17

[CodeEngn] Basic RCE L16

이름이 CodeEngn일때 시리얼키를 구해야하는 문제입니다. 먼저 주어진 실행파일을 exeinfope로 열어보면 32비트 실행파일에 dev-c++ 로 작성된 프로그램이고 패킹은 탐지되지 않았습니다. 이제 한번 실행시켜보면 다음과 같이 프로그램이 시작합니다. 여기에 주어진 이름인 CodeEngn과 아무 값이나 입력해보면 잘못된 비밀번호라는 문자열과 함께 프로그램이 종료됩니다. 이제 이를 기반으로 정확하게 분석해보겠습니다. 이 프로그램의 main 함수입니다. C++로 작성되어서 약간 난해하지만 분석을 해보면 이름을 입력받은뒤에 그 이름의 길이를 구하고 그 길이값을 이용해서 연산을 한번하고 그다음에 비밀번호를 입력받습니다. 그리고나서 다시한번 연산값에 708225 를 곱한뒤 그 값과 입력값을 비교합니다. 이름..

워게임/CodeEngn 2022.07.08

[CodeEngn] Basic RCE L15

이번 문제도 전 문제처럼 이름이 주어지고 그에 맞는 시리얼값을 구하는 문제입니다. exeinfope로 열어보면 32비트 기반 실행파일이고 델파이로 작성된것으로 확인됩니다. 별다른 패킹은 없으므로 그대로 분석을 진행하겠습니다. 먼저 프로그램을 실행시켜보면 다음과 같이 이름과 시리얼값을 입력할수 있습니다. 이름을 CodeEngn으로 입력하고 시리얼값은 임의의값으로 넣어보면 다음과 같이 다시하라는 메세지박스가 출력됩니다. 이제 본격적인 분석을 해보겠습니다. 먼저 아까 봤던 메세지박스에 있는 문자열을 찾아보면 다음과 같이 보입니다. 이제 이 문자열이 쓰인 함수로 진입해보겠습니다. 함수에 진입해보면 다음과 같은 구조인것이 확인됩니다. 디컴파일해보면 다음과 같은 코드인데 델파이로 만들어진 프로그램답게 조금 복잡해보..

워게임/CodeEngn 2022.07.06

[CodeEngn] Basic RCE L14

이번 문제는 다음과 같습니다. 이름이 주어지고 시리얼값을 구하는 문제인데 설명에서 친절하게 5자리 숫자이고 브루트포싱을 해야한다고 가이드라인을 잡아주네요 우선 exeinfope로 열어보면 어셈블리어로 작성된듯한 32비트 실행파일입니다. 패킹은 따로 탐지되진 않네요 이제 프로그램을 실행시켜보면 다음과 같은 구조의 프로그램이 실행되고 여기에 CodeEngn을 이름으로 넣고 시리얼은 아무값이나 넣어보면 다음과 같은 메세지박스가 출력됩니다. 그럼 이것들을 기반으로 분석을 해보겠습니다. 먼저 메세지박스에 있는 문자열을 찾아보면 다음과 같이 쓰이는곳이 보입니다. 이 문자열이 쓰이는 함수로 진입해보면 조금 복잡해보이는 구조이지만 일단 분석을 진행해보겠습니다. 우선 코드는 다음과 같습니다. 앞에있는 코드들은 프로그램의..

워게임/CodeEngn 2022.07.06

[CodeEngn] Basic RCE L13

이번 문제는 다음과 같습니다. 주어진 프로그램을 exeinfope로 열어보면 32비트 실행파일이고 C#으로 만들어졌다는것을 알수 있습니다. 우선 프로그램을 실행시켜봐야합니다. 프로그램을 실행시켜보면 다음과 같이 비밀번호를 입력하라는 문자열이 나온뒤 임의의 값을 입력하면 다시 입력하라는 메세지가 나오는 구조이고 이것이 반복됩니다. 저는 분석을 위해서 dnSpy라는 C# 디컴파일 프로그램을 사용하겠습니다. 먼저 이 프로그램의 메인 함수를 찾아볼것입니다. 그러면 다음과 같이 메인함수가 하나 보입니다. 간단하게 분석해보면 암호화텍스트와 여러가지 기본값들을 설정한뒤 encrypt함수를 호출한뒤 text값을 decrypt함수를 통해서 설정한뒤 비밀번호를 입력받는 로직을 무한루프로 만들었고 만약 입력값이 text와 ..

워게임/CodeEngn 2022.07.06

[CodeEngn] Pro RCE L01

이번 문제는 코드엔진 사이트를 알게됐었던 날과 여러 문제들을 풀면서 한번 풀어보고 싶었던 문제입니 문제를 exeinfope로 열어보면 역시 Pro 문제답게 첫문제부터 UPX 패킹이 되어있는것을 알수 있습니다. 제대로 분석하기 위해서 upx.exe로 언패킹 해줍니다. 그리고나서 다시 exeinfope로 확인해보면 제대로 언패킹이 된것을 확인할수 있습니다. 32비트 기반 실행파일이고 비주얼 c++로 작성되었네요. 이제 한번 프로그램을 실행시켜보겠습니다. 프로그램을 실행시키면 다음과 같이 문자열들이 나온뒤 인증키를 입력하라고 나옵니다. 여기서 아무값이나 입력하면 다음과 같이 인증 실패라는 문자열과 암호화된 플래그가 메세지박스로 출력됩니다. 이것들을 이용해서 키값 검사루틴을 찾아보겠습니다. 저는 IDA를 사용해..

워게임/CodeEngn 2022.07.04
728x90