본문 바로가기

Security Challenges/CodeEngn31

[CodeEngn] Advance L11 https://codeengn.com/challenge/rce_advance파일을 실행시키면 Name과 Serial을 입력받는다.Serial에는 94E7DB1B 값을 넣어야 하고, Name 값은 우리가 구해야 한다. 일단 packing은 안되어 있다. 문자열을 확인해 보면 Invalid serial number. 문자열을 찾을 수 있다. 해당 부분으로 가서 보면 0x401116 주소에 jecxz로 Invalid serial number. 나 Serial accepted.로 간다.바로 위의 0x401146 함수가 있으니 일단 여기에 bp를 걸어 보겠다. 똑같이 Name에 1234를 넣고 실행해 보면 0x40233A 주소에 Serial 값이 들어간다. 일단 함수 안으로 들어가면 ebp-0x8 주소에 Name.. 2025. 7. 20.
[CodeEngn] Advance L10 https://codeengn.com/challenge/rce_advance파일을 실행시키면 Name과 Serial을 입력받는다.Serial이 WWWCCCJJJRRR이기 때문에 Name만 구해주면 된다. exeinfo로 보면 packing은 안되어 있고, C++로 제작되었다. 문자열 참조를 하면 위에 AJXGRFV . . . 하면서 긴 문자열과 Enter Your Name: 문자열이 있다.그 밑에는 Good job이 있는데, 저기로 가보자. 바로 위에 cmp byte ptr ss:[ebp-A5], 0으로 [ebp-A5] 값이 0이면 Wrong serial. Keep trying. 문자열이 출력된다.때문에 [ebp-A5]의 값은 0이면 안된다.그럼 이제 [ebp-A5]의 값이 어디에서 정해지는지 찾아보자... 2025. 7. 20.
[CodeEngn] Advance L09 https://codeengn.com/challenge/rce_advance파일을 실행시키면 이렇게 Username과 Password를 입력받고 correct나 incorrect를 출력하는 것 같다. exeinfo를 보면 멀쩡하다.이번에도 x32dbg로 실행이 안되기에 IDA로 문제를 풀었다. IDA로 열면 우리가 봐야 할 함수들이 되게 적은 것을 볼 수 있다._main 함수에서 24번 줄과 26번 줄에 아까 봤던 Username과 Password 문자열이 있는 것을 확인할 수 있다. 보면 cout으로 Username과 Password를 출력해주고 있다.그리고 cin 으로 name과 password에 입력을 받는다.그 후에 sub_C21000 함수를 호출하는데, 해당 함수에 들어가 보자. 함수에 들어가자.. 2025. 7. 20.
[CodeEngn] Advance L08 https://codeengn.com/challenge/rce_advance파일을 실행시키면 Name과 Key를 입력하라고 한다.Check it! 을 누르면 Key에 Please Enter More Chars...라는 문자열이 뜬다. exeinfo로 열어보면 아무런 이상도 없는 멀쩡한 pe file이었다. x32dbg로 열어서 문자열 참조를 보면 Please Enter More Chars...라는 문자열과 Please Enter Not More Then 30 Chars...라는 문자열이 있다.이거 Basic에서 봤던거 같은데 어떤 문제였는지는 기억이 안 난다. 이 부분을 보면 0x45BB24 주소에서 비교하고 Please Enter More Chars... 문자열을 출력할지 말지 비교한다.eax와 3을 .. 2025. 7. 20.
[CodeEngn] Advance L07 https://codeengn.com/challenge/rce_advance실행시키면 이렇게 입력받는 거랑 Check, Close 버튼 기능이 있다. exeinfo로 보면 .NET 파일이라고 되어 있다. 때문에 dnSpy로 열어서 Form1 파일을 보면 button1_Click 함수에 Congratulations, mate! 문자열이 보인다. 해당 함수의 코드들을 분석해 보면for (int i = 0; i 이 부분에서 Serial의 첫 번째 값을 text에 넣고, 해당 값을 10진수로 바꿔서 num에 대입한다. for (int j = 9; j 이 부분은 Serial의 두 번째 값이고 for (int k = 18; k 이 부분이 Serial의 세 번째 값이다. uint num4 = ytrewq.qwerty.. 2025. 7. 20.
[CodeEngn] Advance L06 https://codeengn.com/challenge/rce_advance파일을 실행시키면 이렇게 나의 남은 군생활은? 하면서 숫자가 뜬다.확이과 x를 눌러도 밑의 숫자가 1 증가해서 새로운 창이 뜬다. exeinfo로 보면 upx로 packing이 되어 있으며 Autoit이 있다. 일단 packing을 풀고, IsDebuggerPresent를 참조하여 jne를 je로 patch 해줬다.그 후, x32dbg로 열어 분석하려 했는데 감이 안 잡혔다. 그러다가 exe2aut을 알게 되어 unpacking 한 파일을 열어보니For $a = 1 To 790 MsgBox(0, "나의 남은 군생활은? CodeEngn Challenges Reverse2 L06 by Lee Kang-Seok", $a)Next이러한 .. 2025. 7. 20.