pwnkidhn.github.io

고정 헤더 영역

글 제목

메뉴 레이어

pwnkidhn.github.io

메뉴 리스트

    • 분류 전체보기 (194)
      • memo (0)
      • Pwnable Exploitation (19)
        • 01.Shellcode (4)
        • 02.Return to Shellcode (1)
        • 03.RTL(Return to libc) (2)
        • 04.Frame faking(Fake ebp) (1)
        • 05.Frame Pointer Overwrite (2)
        • 06.ROP(Return Oriented Prog.. (3)
        • 07.SROP(Sigreturn-oriented .. (2)
        • 08.JOP(Jump-Oriented Progra.. (1)
        • 09.Return-to-csu(__libc_csu.. (0)
        • Malloc - glibc(ptmalloc2) (3)
      • Pwnable Write-Up (54)
        • 00.CTF (0)
        • 01.hackerschool F.T.Z (20)
        • 02.hackerschool L.O.B (21)
        • 03.dreamHack (13)
        • 04.HackCTF (0)
      • Reversing Write-Up (38)
        • 01.Abex's crackme (5)
        • 02.CodeEngn Basic (20)
        • 03.CodeEngn Advance (13)
      • Fuzzing (1)
        • Theory (1)
      • Programming (22)
        • Data Structure (0)
        • Windows System (22)
      • Computer Science (60)
        • Computer Architecture (18)
        • OS Concepts (29)
        • Linux System (5)
        • Reverse Core (8)

    검색 레이어

    pwnkidhn.github.io

    검색 영역

    컨텐츠 검색

    Reversing Write-Up/02.CodeEngn Basic

    • [Write-up] CodeEngn Basic RCE 20

      2020.01.22 by RACC8N

    • [Write-up] CodeEngn Basic RCE 19

      2020.01.22 by RACC8N

    • [Write-up] CodeEngn Basic RCE 18

      2020.01.20 by RACC8N

    • [Write-up] CodeEngn Basic RCE 17

      2020.01.20 by RACC8N

    • [Write-up] CodeEngn Basic RCE 16

      2020.01.20 by RACC8N

    • [Write-up] CodeEngn Basic RCE 15

      2020.01.20 by RACC8N

    • [Write-up] CodeEngn Basic RCE 14

      2020.01.20 by RACC8N

    • [Write-up] CodeEngn Basic RCE 13

      2020.01.20 by RACC8N

    [Write-up] CodeEngn Basic RCE 20

    문제 : 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 풀이 : 프로그램을 실행시키면 다음과 같은 화면이 뜬다. 우선 key파일이 필요하다고 조건에 있으므로 Key파일을 하나 생성하겠다. 그리고 디버거를 켜보자. CreateFileA 함수를 볼 수 있으며 여기서 파일명은 Crackme3.key임을 알 수 있다. 그리고 밑에 ReadFile로 key파일의 내용을 읽어옴을 예상할 수 있다. Readfile 함수가 호출이 끝나면 cmp [4021A0] 0x12 으로 리턴값과 0x12를 cmp하게 된다. 이로인해 파일 안에 문자열이 18바이트 있어야 분기문을 통과할 수 있다..

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 22. 18:11

    [Write-up] CodeEngn Basic RCE 19

    문제 : 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 풀이 : 프로그램을 실행시키면 다음과 같은 창이 뜨고 몇 초뒤에 꺼진다. 디버거를 실행시켜 해당 메세지를 출력해주는 곳으로 가보자. 근데 계속 이러한 문구가 뜬다. 원인을 찾아보자. 해당 메세지에 관련된 문자열을 찾았다. 이 메세지박스를 출력해주는 분기문을 찾아 올라가봤다. IsDebugger함수를 찾았고, 밑에 JNE 4338DE 분기문을 확인하였다. 이부분을 우회하기위해 JNE 분기문을 JE로 바꿔주겠다. 해당 분기문을 우회하였고, MessageBox는 더이상 생기지 않았다. 계속 분석해보자. 처음 실행했을때 나온 MessageBox를 출력해주는 위치를 찾았다. 원래 실행을 하면 MessageBox를 출력하고 몇 초뒤에 창이 꺼지는데, 창이 꺼지..

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 22. 16:17

    [Write-up] CodeEngn Basic RCE 18

    문제 : Name이 CodeEngn일때 Serial은 무엇인가 풀이 : 프로그램을 실행시켜봤다. 디버거를 켜서 문자열 검색을 해보자. 해당위치를 가보면 분기점을 알 수 있을 것이다. strcmp의 인자값인 AAAA와 06162370056B6AC0이 Key 값임을 알 수있다. AAAA는 입력한 Key값이므로 Real Key는 06162370056B6AC0이다.

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 20. 22:50

    [Write-up] CodeEngn Basic RCE 17

    문제 : Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 풀이 : 프로그램을 실행시킨 모습이다. Name에 한글자를 입력했을 경우 더 많은 입력을 해달라고 한다. 디버거를 켜보자. 문자열 검색을 통해 해당 위치로 가봤더니, cmp eax, 0x3 명령어를 볼 수 있었다. 이부분을 바꿔 Name에 1개가 들어가도록 만들자. 그리고 밑으로 내려가보면 Key를 만드는 함수를 찾을 수 있다. 이 함수를 분석해보자. Name에 A를 입력하겠다. 다음과 같은 연산을 수행한다. 첫번째 로직 연산 결과이다. FFE37AF0 이와같이 밑에 4개 총 5가지의 로직을 통해 Key값을 만들게 된다. 키값이 완성되면..

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 20. 16:23

    [Write-up] CodeEngn Basic RCE 16

    문제 : Name이 CodeEngn일때 Serial을 구하시오 풀이 : 프로그램을 실행시켜보았다. 디버거를 켜보자. 패킹되지않아 OEP를 바로 구할수 있었다. 문자열 검색을 해보자. Good job과 Wrong password를 찾았다. 해당 위치로 가보자. 분기문 JNE 40163C로 진입할 수 있음을 확인하였다. 바로 위의 cmp 명령어에서 Key값을 비교하기 때문에, [ebp-0x3c] 값을 확인해보자. ebp-0x3c는 E4C60D97를 가리키고있으므로 이 값을 10진수로 바꾼 값이 Key임을 알 수 있다. 자 그럼 어떻게 Key값을 만드는지 확인해 보자. Key값의 주소인 ebp-0x3c의 위치에 쓰는 부분을 찾았다. 이부분은 다음과 같은 연산을 한다. 1. Name의 문자열 개수를 받아온다. ..

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 20. 13:09

    [Write-up] CodeEngn Basic RCE 15

    문제 : Name이 CodeEngn일때 Serial을 구하시오 풀이 : 프로그램을 실행시킨 모습이다. 디버거를 켜보자. 패킹되지않아 바로 OEP를 찾을 수 있었다. 문자열 검색을 해보자. 실패했을 때 봤던 Try Again을 찾았다. 해당 위치로 가보자. JNE 458854분기문을 통해 진입하는 것을 알 수 있다. CMP eax, [0x45B844] 이므로 해당 주소의 값을 확인해보자. 이름이 CodeEngn일 경우 해당 주소의 값은 00006160임을 알 수 있다. 따라서 Key값은 24928임을 알 수 있다. 자 그럼 어떻게 Key가 생성되는지 알아보자. 해당 부분이 Key값을 만드는 로직이다. 다음과 같은 연산을 한다. 1) 45B844 = 45B844 + (C * 2^3) ( C o d e E n..

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 20. 11:55

    [Write-up] CodeEngn Basic RCE 14

    문제 : Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) 풀이 : 프로그램을 실행시키면 다음과 같다. 디버거를 켜서 분석해보자. Hardware BP를 이용해 OEP위치로 가보자. OEP를 찾았다. bp를 걸고 문자열 검색을 해보자. Key가 틀렸을 경우 나오는 문자열을 찾았다. 해당 위치로 가보자. JNE 401353분기를 통과해야만 성공 MessageBox를 얻을 수 있다. 분기문의 조건은 cmp eax, esi이며, eax는 우리가 입력한 key값이고 esi가 real key값임을 예상할 수 있다. 바로 위에서 push esi를 하기 때문에 push esi 명령어 위에서 es..

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 20. 10:42

    [Write-up] CodeEngn Basic RCE 13

    문제 : 정답은 무엇인가 풀이 : 프로그램 실행시켰을 때 모습이다. 디버거를 켜보자. 실행이 안된다. 밑에 64bit로 open하라고 한다. 64bit로 열어보자. 뭔가 어려워보인다. 여기서 삽질을 오래 했는데 잘 풀리지가 않았다. PEID로 파일을 확인해 보자. C#과 .NET을 확인할 수 있다. 그렇다고 한다. 그럼 .NET 디컴파일러로 분석해보자. 다음과 같이 Main 함수 소스부분을 얻었다. str과 비교하는 분기문을 확인할 수 있다. 그럼 Visual Studio를 켜서 소스를 수정해보자. 다음과 같이 Str을 출력하도록 해보자. Str을 출력하게한 후 그대로 입력하면 성공이다.

    Reversing Write-Up/02.CodeEngn Basic 2020. 1. 20. 09:48

    추가 정보

    페이징

    이전
    1 2 3
    다음
    TISTORY
    pwnkidhn.github.io © rvkhun
    페이스북 트위터 인스타그램 유투브 메일

    티스토리툴바