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/03.CodeEngn Advance

    • [Write-up] CodeEngn Advance RCE 15

      2020.02.11 by RACC8N

    • [Write-up] CodeEngn Advance RCE 14

      2020.02.11 by RACC8N

    • [Write-up] CodeEngn Advance RCE 12

      2020.02.10 by RACC8N

    • [Write-up] CodeEngn Advance RCE 11

      2020.02.07 by RACC8N

    • [Write-up] CodeEngn Advance RCE 10

      2020.02.06 by RACC8N

    • [Write-up] CodeEngn Advance RCE 9

      2020.02.04 by RACC8N

    • [Write-up] CodeEngn Advance RCE 8

      2020.02.04 by RACC8N

    • [Write-up] CodeEngn Advance RCE 6

      2020.02.01 by RACC8N

    [Write-up] CodeEngn Advance RCE 15

    문제 : Name : 'CodeEngn.com' 일때 Serial은 무엇인가 풀이 : Unlock Code를 입력해야만 Name과 Serial을 입력할 수 있다. 디버거를 실행시켰을때 OEP를 쉽게 찾을 수 없었다. 함수 목록을 확인해 보자. 입력한 문자열을 얻어오는 함수 GetDigItemTextA 함수를 찾았으며 401095로 가면 볼 수있다. 바로 주소로 가봤지만 원하는 함수는 보이지 않았다. 디버거를 붙여서 F9를 두 번 정도 눌러 실행시킨 후 해당 위치를 가보니 원하는 함수를 얻을 수 있었다. 프로그램이 실행되면 그 이벤트로인해 위치에 접근할 수 있는것 같다. cmp eax, 0x7 명령어를 보니 Unlock Code는 8자리 이상이어야 한다. Unlock Code 개수를 8이상으로 맞춰주고 밑..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 11. 22:48

    [Write-up] CodeEngn Advance RCE 14

    문제 : Serial : NH6-0-0091008D0052 일때 Name은 무엇인가 풀이 : 단순한 Serial 을 찾는 문제이다. 디버거를 켜보자. 등록 성공과 실패 문구를 찾았다. 위로 조금 더 올려 프롤로그 부분에 BP를 걸었다. ID와 PASSWD를 입력하고 프로그램을 실행시키면, 다음과 같은 조건분기문을 찾을 수 있다. PASSWD를 비교하게 된다. 여기서 조건을 맞출 수 있는 값은 많지만 문제에서 주어진 NH6-0- 값을 그대로 사용하겠다. 밑으로 내려오게되면 PASSWD값을 만드는 함수를 찾을 수 있다. 여기서 NAME을 AAAABBBB로 주었는데, 함수에서 NAME의 길이가 0xC보다 작으면 두 배를 하여 앞에서부터 0xC까지 잘라버린다. 이제 0xC자리인 Name "AAAABBBBAAAA..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 11. 17:02

    [Write-up] CodeEngn Advance RCE 12

    문제 : Serial : 11E0-FBB4-490D 일때 Username은 무엇인가 풀이 : 디버거를 켜보자. 함수 검색으로 시리얼을 비교하는 부분을 찾았다. 저 부분이전에 시리얼을 만드는 알고리즘이 있을 것이다. 함수중에 strmove 라는 함수가 있다. 분석을 해봤는데.. 이 부분에 Serial 값들이 지나가는것을 확인할 수 있다. 하지만 이 부분까지 오는데 정말 오랜 시간이 걸리는것 같다. 자동으로 StepOver를 하여 BP까지 보내보려했지만 가질 못했당.. 결국 Serial 값들을 어떻게 만드는지 직접 알고리즘 분석을 하지 못하였다. 그래서 다음과 같이 해당 위치에 BP를 걸고 지나가는 Serial 값들을 비교하며 게싱했다. 나름 게싱해서 풀긴 풀었지만.. 분석하여 푼 것이 아니기에 실력을 키운..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 10. 21:35

    [Write-up] CodeEngn Advance RCE 11

    문제 : Serial이 94E7DB1B 일때 Name은 무엇인가 해당 Serial에 대해서 'Serial accepted' 메시지가 나와야 합니다. 풀이 : 디버거를 켜보자. 문자열 검색으로 Serial을 만드는 함수 위치까지 찾을 수 있었다. 이 문제가 겁나 복잡한것이 40217B에 있는 저 값들을 이용하여 cmp 명령어로 각 경우마다 연산하는 방법이 다르다. 특히 여기서 4013AB와 4013BF가 중요한 함수이다. 4013AB는 쉽게 말해서 특정 메모리 [edx+0x402538] 에 값을 PUSH 해주는 함수이고, 4013BF는 특정 메모리 [edx+0x402538] 에 값을 POP 해주는 함수이다. 대충 이런식으로 하나하나 분석을 하여 알고리즘을 알아내는데 거의 이틀이란 시간이 걸렸다. 분석결과 ..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 7. 21:26

    [Write-up] CodeEngn Advance RCE 10

    문제 : Serial이 WWWCCCJJJRRR 일때 Name은 무엇인가 Hint 1 : 4글자임 Hint 2 : 정답으로 나올 수 있는 문자열 중 (0~9, a~z, A~Z) 순서상 가장 먼저 오는 문자열 풀이 : Name과 Serial을 입력하는 프로그램이다. 문자열 검색하여 해당 위치로 이동하였다. cmp eax,0xc명령어로 Serial은 0xC자리 문자열임을 알 수 있다. 밑으로 내려가면 ebp-0xA5와 0x0을 비교하는데 이 조건을 만족해야 성공 메세지를 띄울 수 있다. ebp-0xA5에 하드웨어 BP를 걸어보자. 401FBF에서 al 값을 ebp-0xA5에 넣는것을 확인할 수 있다. 여기서 al을 결정하는 값을 찾기위해 call 40144C로 stepinto 해보자. 함수가 끝나기 직전에 e..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 6. 10:57

    [Write-up] CodeEngn Advance RCE 9

    문제 : Password는 무엇인가 풀이 : 우선 Password를 알기 전에 UserName을 알아야 할 것 같다. 디버거를 켜보자. 문자열 검색으로 분석할 위치를 찾았다. 입력한 이름 AAAA와 DonaldDuck을 비교하는 것으로 보아 DonaldDuck을 사용하면 될 것 같다. 해당위치까지 갈 수 있도록 이름을 DonaldDuck으로 하고 다시 실행해보자. 먼저 입력한 이름 DonaldDuck과 NULL을 비교한다. 밑으로 내려가보면 cmp eax, ecx 가있는데 eax에는 비밀번호로 입력한 1234의 16진수 값이 들어있음을 알 수 있다. 그럼 ecx값이 패스워드임을 예상할 수 있다. 8921743. 아까와 다른 모습이지만 여전히 틀렸다고 한다. 계속 분석해보자. test bl, bl 조건으로..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 4. 21:52

    [Write-up] CodeEngn Advance RCE 8

    문제 : Key 값이 5D88-53B4-52A87D27-1D0D-5B09 일때 Name은 무엇인가 힌트 : Name은 두자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 풀이 : 아무것도 입력하지 않고 Check it을 눌렀을 경우 Please Enter More Chars 라는 메세지를 볼 수 있다. 디버거를 켜보자. 문자열 검색으로 해당 위치까지 올 수 있다. 우선 위 에 Name의 길이가 3인지 확인하는 부분이 있는데, 힌트에서 Name은 두 글자라고 했으니 명령어를 수정해보자. 밑으로 따라가보면 Key값을 만드는 알고리즘을 확인할 수 있다. Key값을 만드는 알고리즘은 다음과 같이 연산을 하고, 이러한 연산이 밑에 4개 정도 더 있다. 이렇게 연산한 값들의 각각 앞에서부터 4자리 6자리 등으로 조..

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 4. 17:30

    [Write-up] CodeEngn Advance RCE 6

    문제 : 남은 군생활은 몇일 인가 풀이 : 프로그램을 실행시키면 확인을 누를때마다 계속해서 숫자가 올라간다. 디버거를 실행시켜보자. 안티 디버깅이 되어있으니 우회해보자. 안티디버깅 부분을 우회했다. 메세지를 출력해주는 곳을 찾아보자. MessageBox 함수를 찾았고 ebp에 전역일이 있다. 현재는 2인데 남은 전역일까지 계속 루프를 돈다. 그럼 루프를 탈출할 수 있는 분기문이 있을 것이고, 그 분기문 직전에 cmp 해주는 값이 남은 전역일임을 예상할 수 있다. 계속 흐름을 따라가보면 cmp ebp, eax 명령어를 볼 수 있는데 eax는 현재 일 수이며, ebp는 남아있는 총 전역일임을 알 수 있다. 316을 10진수로 바꾸면 790, 즉 790일 남았다.

    Reversing Write-Up/03.CodeEngn Advance 2020. 2. 1. 12:41

    추가 정보

    페이징

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

    티스토리툴바