본문 바로가기

Security/Reversing30

[리버싱 입문] 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.
[CodeEngn] CodeEngn Basic RCE L08 OEP 주소를 구하면 되는 문제이다. 두 가지 방법이 있다. 일단 언패킹을 안하고 푸는 방법이다. 처음 시작 부분이 PUSHAD로 되어있는데 POPAD를 찾아서 그 후에 JMP하는 부분을 찾으면 된다. 맨 처음 키면 PUSHAD가 있다. command 찾기로 POPAD 명령어를 찾아준다. 이렇게 POPAD를 찾으면 아래에 JMP 명령어가 있다. 여기서 JMP해서 도착하는 지점이 OEP 주소이다. 따라서 OEP 주소는 01012475이다. 다른 방법은 언패킹을 해서 푸는 방법이다. 언패킹을 해준 뒤 파일을 열어준다. 별다른 절차 없이 바로 OEP 주소가 01012475임을 알 수 있다. (언패킹한 후의 시작 주소) 따라서 답은 01012475이다. 2022. 6. 25.
[CodeEngn] CodeEngn Basic RCE L06 6번 문제이다. 언팩을 하라고 했으니 패킹된 파일일 것이라 예상할 수 있다. 그리고 시리얼 번호를 찾으면 되니 문자열 위주로 먼저 찾아보면 될 것 같다. 일단 Exeinfo로 패킹 상태를 알아보았다. UPX 패킹이 되어있다는 것을 확인한 뒤 언패킹해준다. 언패킹 완료했다. 다음으로 Ollydbg로 파일을 열어준다. 문자열 검색을 해서 올바른 시리얼 값을 입력했을 때 출력되는 문구 같은 것을 찾았다. 그 후 일단 프로그램을 실행시켜서 아무 값이나 넣어줘봤다. 값을 넣었더니 위의 화면처럼 위쪽에 내가 입력한 값이 떴다. 코드를 보면 두 값을 비교하고 있음을 알 수 있다. 따라서 시리얼 값은 AD46DFS547이다. 실제로 값을 넣어줬더니 맞았다는 메세지 창이 떴다. 다음으로 OEP 주소를 찾아야 한다. OE.. 2022. 6. 25.