본문 바로가기

Security118

[CodeEngn] CodeEngn Basic RCE L13 13번 문제이다. 정답이 무엇이냐고 묻고 있다. 일단 프로그램을 실행시켜보았다. 비밀번호를 입력하라고 하는데, 아무 값이나 넣어보면 Bad Luck! Try again! 이라고 뜨는 것을 확인 할 수 있다. OllyDbg로 열기 전에 Exeinfo에 파일을 올려보았다. 이 파일은 C#으로 만들어졌다고 한다. 딱히 패킹된 상태는 아닌 것 같아 바로 OllyDbg로 열어보려고 했다. 안 열린다. 그래서 아까 Exeinfo 창을 다시 한번 보았는데 아래쪽에 힌트로 .NET Reflector를 사용해보라고 하는 것 같다. .NET Reflector를 다운 받아서 이걸로 프로그램을 열어보았다. 아까 출력되었던 문구를 찾았다. 코드를 좀 더 간편하게 보기 위해서 소스 코드를 추출하고 비주얼 스튜디오로 열어보았다. .. 2022. 7. 2.
[리버싱 입문] 5장 리버싱의 어려운 문제들 보호되어 있는 글 입니다. 2022. 6. 28.
[리버싱 입문] 3장 리버싱에 익숙해지기 보호되어 있는 글 입니다. 2022. 6. 26.
[리버싱 입문] 2장 리버싱 시작하기 보호되어 있는 글 입니다. 2022. 6. 26.
[리버싱 입문] 1장 리버싱을 위한 기초 지식 보호되어 있는 글 입니다. 2022. 6. 26.
[Reversing.kr] Easy Crack 실행시키면 이렇게 뜬다. Exeinfo로 작성된 언어와 패킹 상태를 알아보았다. 위의 화면을 보면 C++로 되어있고 패킹되지 않은 상태라는 것을 확인할 수 있다. IDA로 돌아와서 문자열을 검색해보았다. 그 중에서 Congratulation!! 부분이 키와 관련된 내용이 있을 것 같아 눌러보았다. Incorrect Password와 Congratulation이 있는 걸 볼 수 있는데 각각 참조해봐서 어떤 과정을 거쳐서 오게 되는지 알아보자. 이렇게 004010B5, 004010CD, 0040110B, 00401112에서 여기로 jmp해 오는 것을 확인할 수 있다. 먼저 첫번째 조건부터 살펴보았다. ESP+5에 저장된 값과 'a'를 비교하고 있다. 그런데 ESP+5에는 입력값의 두번째 값이 들어있으므로 구.. 2022. 6. 25.
[CodeEngn] CodeEngn Basic RCE L12 12번 문제이다. 일단 key 값을 구해야하는 것 같다. 한번 실행해봤는데 역시나 key값이 필요한 모양이다. Ollydbg로 파일을 열어주자. 구글링을 해보니 key 값, 패스워드, 시리얼 값 등을 알아낼 때에는 문자열을 보는 게 좋다고 한다. 문자열 검색을 해보았다. 3가지 정도가 뜨는 것 같은데, 그 중에서 right key를 찾았다며 축하하는 문자열이 있다. 여기로 이동해보았다. 바로 위쪽에서 CMP로 EAX와 7A2896BF를 비교하는 부분이 있다. 두 값이 같으면 축하문구가 나오고 아니면 점프한다고 한다. 따라서 EAX 값이 7A2896BF가 되어야 한다. 비밀번호에 10을 입력해보았다. EAX에 A가 저장되는 것을 확인할 수 있다. 10진수로 입력하면 16진수로 저장되는 건가 싶어서 다시 한.. 2022. 6. 25.
[CodeEngn] CodeEngn Basic RCE L11 11번 문제이다. OEP와 Stolenbyte를 찾으라고 하고 있다. OEP (Original Entry Point)는 패킹된 파일의 실제 프로그램 시작 부분이고, StolenByte는 훔친 바이트라는 뜻으로 패킹된 프로그램에서 코드의 일부를 OEP로 점프하기 전에 숨기는 것을 의미한다. 일단 패킹되어있는 듯하니 Exeinfo로 패킹 상태를 확인해보았다. UPX로 패킹되어있는 것을 확인할 수 있다. 구글링을 해보니 UPX 패킹의 특징은 PUSHAD ~ POPAD 명령어 내부에서 압축해제 코드가 실행되고 POPAD 명령어 실행 후 JMP 명령어를 통해 OEP로 이동한다고 한다. 또한 StolenByte 훔쳐진 코드는 OEP 주소로 JMP하기 전에 PUSH된다고 한다. 일단 Ollydbg로 파일을 열어보았다.. 2022. 6. 25.
[CodeEngn] CodeEngn Basic RCE L10 10번 문제이다. OEP 주소와 '등록성공'으로 가는 분기점의 OPCODE를 구하라고 한다. OPCODE는 디버거에서 주소가 표시되는 창과 어셈블리 명령이 표시되는 창 사이의 숫자로 나타나는 코드를 의미한다. 그러니까, 컴퓨터가 실행할 연산의 종류를 나타낸다. 아무튼 프로그램도 한번 실행시켜봤다. 그렇단다. 어차피 뭘 입력해도 지금은 아무 소용 없으니까 다음 단계로 넘어가자. 일단 패킹되어있는 것 같으니 Exeinfo로 패킹 정보를 확인해보았다. 처음 보는 Aspack으로 패킹되어있다. 구글링을 해보니 Aspack 패킹은 PUSHAD -> 복호화 코드 실행 -> POPAD -> Return 0C -> OEP 값 PUSH -> Return으로 OEP 주소로 이동한다고 한다. 일단 Ollydbg로 파일을 열.. 2022. 6. 25.