Reversing 35

[reversing.kr] Easy_ELF 풀이

ELF파일 (Executable and Linking Format) 이란? ELF는 실행 파일과 연결 가능 형식으로 생성된 시스템 파일이며, 실행 프로그램, 메모리 덤프, 공유 라이브러리를 저장할 수 있습니다. 많은 유닉스 기반시스템에서 사용되는 표준 파일 형식입니다. Windows OS의 exe와 실행 파일 포맷이라는 개념에서는 비슷하다고 볼 수 있다.readelf -a Easy_ELFreadelf 명령어로 Easy_ELF를 열어보면 ELF헤더를 먼저 찾아볼 수 있었다.다음으로는 Section헤더 부분을 볼 수 있었고, 이후로는 프로그램 헤더 정보, 세그먼트 매핑 정보 등 다양한 정보들을 찾아볼 수 있었다../Easy_ELF현재 디렉토리에 있는 Easy_ELF 파일을 실행시키면 권한이 없다고 한다. c..

[CodeEngn] RCE advance L11 풀이

Q11. Serial이 94E7DB1B 일때 Name은 무엇인가. 해당 Serial에 대한 정답이 여러개 나오는 문제이며 Contact로 보내주시면 인증키를 보내드리겠습니다. 해당 Serial에 대해서 'Serial accepted' 메시지가 나와야 합니다.실행한 후 OK를 누르면 다음과 같이 유효하지 않은 Serial 번호라고 한다.전체 수동 분석Ollydbg로 text strings referenced를 통해 성공과 실패시 출력문구를 확인했다.실패했을 경우 출력되는 문구로 찾아가 처음으로 시작되는 위치인 4010EF 로 이동했다.살펴보니 4010F2 에서 401146 주소를 한 번 호출하는 것 외에는 별다른 호출하는 함수가 없어보였다.4010EF에 BP를 걸고 디버깅 진행하고, 4010F2 에서 st..

Reversing/CodeEngn 2025.09.14

[CodeEngn] RCE advance L10 풀이

Q10. Serial이 WWWCCCJJJRRR 일때 Name은 무엇인가. Hint 1 : 4글자, Hint 2 : 정답으로 나올 수 있는 문자열 중 (0~9, a~z, A~Z) 순서상 가장 먼저 오는 문자열실행했을 때 CMD로 실행되며, Name과 Serial 값을 받고 출력되는 문구들을 확인하였다.Exeinfo PE를 통해 C++로 작성된 파일임을 확인하였다.텍스트들 중에서 성공했을 때의 문구를 확인했다.해당 텍스트의 주소로 가보아도 별다른 힌트를 얻을 수 없었다.EP부터 천천히 분석을 시도하였다.401233주소에서 입력하는 Name값을 받는다.입력한 값을 2개를 받으면 바로 끝나버리므로 추가로 BP를 걸 지점을 찾아야 했다.Name값과 Serial값을 받는 지점에 BP를 걸었었지만 별다른 소득이 없어..

Reversing/CodeEngn 2025.09.14

[CodeEngn] RCE advance L09 풀이

Q9. Password는 무엇인가실행 시 cmd로 실행되며, Username과 password를 받는 프로그램이다.exeinfo PE를 통해 C++로 작성된 파일이라는 것을 알 수 있었다.ollydbg로 text를 확인해 본 결과 DonaldDuck이라는 문구를 확인할 수 있었다.아마도 Username인 듯했다.분석하던 중 디버거 프로그램 동작을 검사하는 IsDebuggerPresent 함수를 발견했다.81105F주소에서 Username값을 2개의 주소에서 받아오는 것을 확인했다.한 줄씩 실행해보면 DonaldDuck 이라는 글자에서 2글자씩 빼와 검사하고, 최종적으로는 해당 값을 출력하는 듯 하였다.마지막에서 검증하는 값이 왜 서로 다른지에 대해서 의문이 들긴하였다.814080주소 이후부터 Userna..

Reversing/CodeEngn 2025.09.14

[CodeEngn] RCE advance L08 풀이

Q8. Key 값이 5D88-53B4-52A87D27-1D0D-5B09 일 때 Name은 무엇인가. 힌트 : Name은 두 자리인데.. 알파벳일 수도 있고 숫자일 수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자)문제에서 준 Key값과 Name에는 임의의 값인 CodeEngn을 입력해서 실행해 보았다.Name값이 다르기에 Check it! 을 눌러봐도 별 반응이 없었다.정답인 name값을 입력했을 때 나올 문구를 확인한 후 해당 45BBAD 주소로 이동했다.스택의 시작지점인 45BAE8 주소에 BP를 걸고 디버깅했다.동적 분석에는 [그림 4]처럼 입력하고 진행했다.45BB12주소에서 처음으로 입력한 12345를 확인할 수 있었다.이때의 EAX는 5로, 문자의 길이를 의미하는 듯했다.추가적으로 스택..

Reversing/CodeEngn 2025.09.13

[CodeEngn] RCE advance L07

Q7. Name이 CodeEngn일때, Serial은 28BF522F-A5BE61D1-XXXXXXXX 이다. XXXXXXXX를 구하시오.07.exe 프로그램 실행 후 주어진 Name값과 Serial값을 그대로 입력하고 Check 를 클릭해보았다.예외오류가 발생하였다. 'JIT 디버깅'이라는 것을 사용하는 듯하였다.우선 JIT 디버깅에 대해서 구글링을 해보았다.JIT 디버깅Just-In-Time 디버거를 사용하여 디버그 - Visual Studio (Windows) | Microsoft Learn Just-In-Time 디버거를 사용하여 디버그 - Visual Studio (Windows)Visual Studio에서 Just-In-Time 디버거를 사용하여 디버그합니다. Just-In-Time 디버깅은 앱..

Reversing/CodeEngn 2025.09.12

[CodeEngn] RCE advance L06 풀이

Q6. 남은 군생활은 몇일 인가. 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오.확인 버튼을 계속 클릭해보면 숫자가 카운팅되었고, 추가적으로 닫기 버튼도 숫자가 카운팅 되는 것을 알 수 있었다.더 이상 클릭으로 알아낼 수 없다고 생각하여 Ollydbg로 열어보았다.압축된 코드라고 알려주었다. 06.exe의 파일 구조를 확인할 필요가 있었다.UPX 패킹된 프로그램임을 확인했다.UPX 언패킹 툴을 통해 06.exe를 언패킹해주었다.AutoIt 스크립트로 컴파일되었다는 문구를 확인했다. 이 힌트를 통해 AutoIt 전용 디컴파일러로 06.exe를 열어보기로 했다. AutoIt 전용 디컴파일러인 Exe2Aut 를 이용해서 분석을 진행했다.첫 줄에 보면 1 To 790이라는 숫자를 확인해 볼 수 있다.이는..

Reversing/CodeEngn 2025.09.11

[CodeEngn] RCE advance L05 풀이

Q5. Serial 을 구하시오.실행시 Pass Corta라는 프로그램이 실행된다.3번의 Ok를 검증하고 틀리면 자동종료 될 것 같다.Serial값으로 12345로 테스트 해보았더니 해당 화면만 출력되고 다른 값 입력이나 카운팅 등은 이뤄어지지 않았다.이번 구조는 무언가 패킹이 되어있는 것 같다. (OllyDbg에서 인식하지 못하면 'DB ..' 구조로 보인다.)어떤 파일 구조인지에 대해 알아보아야 했다.이번엔 패킹이 된 것이 아닌 Visual Basic 프로그램이다.MS Visual Basic의 전용 디컴파일러를 이용해야 되겠다고 생각해서 찾아보았다.Visual Basic 전용 디컴파일러VB Decompiler - Download - Visual Basic 5.0, 6.0, .NET and C# .NE..

Reversing/CodeEngn 2025.09.11

[CodeEngn] RCE advance L04 풀이

Q4. Name이 CodeEngn 일때 Serial은 무엇인가Name : CodeEngn, Serial : 12345로 테스트 해본결과 유효하지 않은 Serial이라고 한다.이번에는 못보던 구조임을 확인했다.알아보니 OllyDbg에서 인식하지 못하는 값에 대해서는 'DB ..' 형식으로 출력된다고 한다.Exeinfo PE로 04.exe를 분석해본 결과 Unknown exe 외에는 아무것도 알아낼 수 없었다.어떻게 접근해야 할지 모르겠어서 구글링을 통해 검색했다.한 줄씩 디버깅을 해보면 4011B3 ~ 4011C0구간이 루프가 계속 도는 것을 확인할 수 있었다.검색 결과 unpacking 루틴이라고 한다.프로그램 자체적으로 unpacking 과정이 있어서 OllyDbg에서 인식하지 못했던 것이였다.디버깅..

Reversing/CodeEngn 2025.09.11

[CodeEngn] RCE advance L03 풀이

Q3. Name이 CodeEngn 일때 Serial은 무엇인가Name : CodeEngn, Serial : 12345를 입력해서 실행해보았더니 답이 아니라는 문구가 출력되었다.해당 주소로 이동해 보았지만 다른 단서를 찾지는 못하였다.401125에서 EAX값과 3을 비교하고, 401128의 분기점을 만나 성공/실패로 분기한다.따라서 401125에 BP를 걸고 디버깅을 진행한다.테스트 값은 [그림 1]에 입력한 값과 동일하게 입력했다.입력한Serial 값인 12345 와 3265754874 을 비교하는 것을 알 수 있었다.따라서 Serial 값은 3265754874 이다.

Reversing/CodeEngn 2025.09.11