목록War Game/CodeEngn (25)
tmxklab
1. 문제 1) 문제확인 2. 접근방법위에서 사용된 문자열을 찾을 수 있음 eax값과 dword_45B844와 비교하여 분기하는데 오른쪽으로 가면 "Try Again"이 뜨고 왼쪽으로 가야함 3. 문제풀이 입력 값 "1234"를 주었을 때 헥사 값 0x4D2로 변환되어 eax에 저장되고 0x45B844에 있는 값 0x6160과 비교한다. 따라서 24,928(0x6160)을 입력하면 맞을듯 싶다. 4. 몰랐던 개념 Uploaded by Notion2Tistory v1.1.0
1. 문제 1) 문제확인 2. 접근방법 문자열을 따라가보면 eax와 esi값을 비교하여 분기하는 것을 확인, 이제 디버깅을 통해서 저 부분을 확인해보자 3. 문제풀이문제에서 Name이 "CodeEngn"일 때 Serial값을 구하는 거니 위 사진처럼 입력 값을 넣어 보았다. 입력 값이 저장되어 있는 0x403138을 파라미터로 주고 sub_40183()을 호출하면 리턴 값으로 0x4D2로 변환된 것을 알 수 있다. 그리고 eax값과 esi값을 비교하는데 이 때 esi값은 0x129A1이다.이제 알아내야 하는 것은 Serial값을 0x129A1로 만들기 위해 입력 값을 어떻게 넣는가인데 생각해보면 "1234"를 넣는데 0x4D2(1234)로 나오는 것을 보면 sub_40183()의 역할은 문자열을 받아서 ..
1. 문제 1) 문제확인패스워드를 입력하라고 뜬다. C#으로 작성된 파일 2. 접근방법 .NET 디컴파일러이자 디버깅 툴인 dnspy를 이용하여 분석(다른 .NET Framwork로 개발된 프로그램에 대한 디컴파일러 툴들로 lLSpy와 dotPeek이 있음) dnSpy Download)Releases · dnSpy/dnSpyThis repository has been archived by the owner. It is now read-only. You can't perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh yo..
1. 문제 1) 문제확인어떠한 값을 입력하고 Check하면 아무런 반응은 없지만 About창은 뜸 2. 접근방법 키 값을 찾아야 되고 성공메시지 대신 Key값이 출력되어야 하므로 성공메시지 문자열을 찾아서 key값으로 Overwrite해야한다. 3. 문제풀이 문자열 검색Text(0x40353B ~ 0x403562), 문자열 참조하는 곳 확인eax값과 0x7A2896BF 비교하여 분기Key : 0x7A2896BF(2049480383) 메시지 박스에 Key값 "2049480383\x00"(11byte)을 출력해야 하므로 Hex값을 편집할 수 있는 툴을 열어보자(나는 010 Editor를 사용하였다.) 0x0D3B ~ 0x0D45 범위의 주소에다가 입력하면 잘 출력될 것이다. 문제의 답은 "Key값 + 0D3..
1. 문제이번에도 Stolenbyte를 찾는 문제가 나왔따 1) 문제확인 UPX로 패킹되어 있음 이전에 풀었던 것처럼 패킹된거를 풀면 저렇게 뜬다. 2. 접근방법 3. 문제풀이 문제가 중복돼있는 건지 모르겠는데 Basic RCE L09와 똑같다.[CodeEngn] Basic RCE L09실행시키면 왼쪽 그림이 나오고 확인 누르면 왼쪽 그림처럼 파일을 찾을 수 없다고 뜸 근데 언패킹하고 다시 실행시켜보면 알 수 없는 문자가 나온다. 언패킹된 pe파일을 올리고 실행시키면 EP부터 nop sled마냥 nop이 연속적으로 나오고 MessageBoxA()를 호출하는데 MessageBoxA()의 인자 값에 아무 것도 안들어가서 알 수 없는 문자가 뜬 것 같다.https://rninche01.tistory.com/e..
1. 문제 1) 문제확인Name이나 Serial에 입력하고 싶은데 안써진다... 오옹 이번엔 Aspack으로 패킹되어 있따. 일일히 패커를 찾아서 다운받고 실행하기 귀찮으니 VMUnpacker를 다운받아서 언패킹하자VMUnpacker는 300개가 넘는 패커들을 풀어낼 수 있는 언패킹 툴이다. 실행시켜 파일을 올리면 알아서 ASPack이라고 잡아주며 지원되는 것을 확인할 수 있다. 이제 Unpack버튼을 눌러 언패킹해주자 2. 접근방법 OEP와 "등록성공"으로 가는 분기점의 OPCODE를 구해야 한다.OEP는 ida에서 start함수를 따라가거나 아니면 x32dbg에서 F9를 눌렀을 때 처음으로 멈춘 부분의 주소 값을 구하면 될 것이다.OPCODE는 먼저 "등록성공"과 관련된 문자열을 통해 로직을 살펴봐야..
1. 문제 1) 문제확인실행시키면 왼쪽 그림이 나오고 확인 누르면 왼쪽 그림처럼 파일을 찾을 수 없다고 뜸 upx 언패킹 ㄱㄱ 근데 언패킹하고 다시 실행시켜보면 알 수 없는 문자가 나온다. 2. 접근방법 언패킹된 pe파일을 올리고 실행시키면 EP부터 nop sled마냥 nop이 연속적으로 나오고 MessageBoxA()를 호출하는데 MessageBoxA()의 인자 값에 아무 것도 안들어가서 알 수 없는 문자가 뜬 것 같다. 이후에 실행되는 로직을 살펴보면 딱히 별 거 없다. 문제의 요점은 Stolen Byte를 찾는 것이다. 언패킹되면서 MessageBoxA()의 인자로 들어가는 특정 코드가 다른 곳으로 옮겨진 듯하다. 따라서, 패킹된 pe파일을 확인하여 찾아보자 3. 문제풀이일단 언패킹된 pe파일에는 ..
1. 문제 1) 문제확인실행해보면 계산기가 뜬다.(로컬에 있는거 말고..) upx로 패킹되어 있으니 언패킹을 진행하자 2. 접근방법 3. 문제풀이 OEP를 구하는 거니깐 바로 디버깅을 해보자 EntryPoint : 0x01012475 4. 몰랐던 개념 Uploaded by Notion2Tistory v1.1.0
1. 문제 1) 문제확인 실행 시 왼쪽 창, 틀린 값 입력 시 오른쪽 창 2. 접근방법 패킹되어 있지는 않아서 아이다에 올려서 확인해보고 디버깅을 통해서 시리얼 값을 확인해보자 3. 문제풀이 GetVolumeInformationA()를 통해 VolumeNameBuffer에 지정된 드라이브의 이름을 가져온다. 그리고 VolumeNameBuffer의 값이 어떠한 작업을 거쳐 조금씩 수정되고 사용자의 입력 값이 저장된 String값과 비교하여 분기한다. GetVolumeInformationA()호출 이후에 VolumeNameBuffer(0x40225c)에 현재 C드라이브의 이름인 "로컬 디스크"가 저장되어 있다. 문제에서는 C드라이브의 이름이 "CodeEngn"일 경우 어떻게 변하는지 알아보라고 했으니 값을 ..
1. 문제 1) 문제확인실행하면 왼쪽 창이 뜨고 아무거나 입력하고 "Check Serial"버튼을 누르면 오른쪽 창에 잘못된 시리얼 값이라고 메시지 박스가 뜬다. UPX로 패킹되어 있으므로 언패킹을 진행하자 2. 접근방법 OEP(Origianl Entry Point)와 Serial값을 찾아야 되는데 입력한 값과 Serial값과 비교하는 로직을 찾아서 확인해보면 될 듯 3. 문제풀이 일단 OEP는 0x401360이며 "Wron serial!!"문자열을 따라가보면 위에 보이는 함수에서 사용된다. strcmp로 문자열을 비교하는데 String은 사용자의 입력 값이고 aAd46dfs547은 Serial값이다.Serial number : AD46DFS547 4. 몰랐던 개념OEP(Original Entry Poi..