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

    검색 영역

    컨텐츠 검색

    Pwnable Write-Up

    • [Write-up] Level 14

      2019.12.07 by RACC8N

    • [Write-up] Level 13

      2019.12.07 by RACC8N

    • [Write-up] Level 12

      2019.12.07 by RACC8N

    • [Write-up] Level 11

      2019.12.06 by RACC8N

    • [Write-up] Level 10

      2019.12.06 by RACC8N

    • [Write-up] Level 9

      2019.12.06 by RACC8N

    • [Write-up] Level 8

      2019.12.06 by RACC8N

    • [Write-up] Level 7

      2019.12.06 by RACC8N

    [Write-up] Level 14

    HINT : attackme의 소스코드 이제 앞으로 bof와 포맷 스트링 문제가 자주 나올 것 같다. 소스코드를 확인해보면 buf 크기는 20인데, fgets에서 45 만큼 buf에 쓰기 때문에 bof임을 알 수 있다. fgets를 통해 check을 0xdeadbeef 값으로 덮어 쓴다면 아래 조건문으로 들어가 쉘을 딸 수 있을 것 이다. 우선 buf에서부터 check까지의 크기를 알아보자. deadbeef와 비교하는 값의 위치는 ebp-16임을 알 수 있다. gdb를 통해 ebp-16에 어떤 값이 들어있는지 확인해 보자. 0xbfffed68이 들어 있는것을 확인했다. 이제 fgets 함수 다음에 breakpoint를 걸어 buf부터 check까지의 크기를 구해보자. 0x41이 들어있는 buf부터 0xb..

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 7. 20:58

    [Write-up] Level 13

    HINT : attckme의 소스코드 bof 이지만 중간에 i == 0x1234567이어야 한다. 리눅스의 보호기법 중에 Canaries가 있는데 이와 비슷하게 bof를 보호해주는 기법이다. 하지만 쉽게 우회 할 수 있다. 우선 환경 변수로 저장한 shellcode의 위치를 알아 보자. 0xbffffbf8에 위치하고 있다. 그 다음 ret 위치와 i의 위치를 확인해 보자. i 위치에서 12바이트 뒤에 ret가 있는 것을 확인 할 수 있다. 자 그럼 strcpy 함수 뒤에 break point를 걸어서 i까지의 버퍼의 크기를 구해 보자. 0xbfffe780부터 0xbfffeb88 까지 임을 확인할 수 있으며 이 차이는 1036 이다. 즉 buf (1032) + i (4) + buf (8) + sfp (4)..

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 7. 03:22

    [Write-up] Level 12

    HINT : attackme의 소스코드 level11과 비슷한 bof이다. gets으로 str을 입력 받을 때 bof을 이용하여 ret값을 조작하여 쉘을 딸 수 있다. 환경변수에 shellcode를 입력한다. 0xbffffbfc를 보면 환경변수에 저장해놓은 \x90+shellcode가 들어있는 것을 알 수 있다. 이 주소를 ret 위치에 덮으면 된다. gets함수 뒤에 break point 를 걸어 놓고 A를 입력해 준 결과, 0xbffffe860부터 A가 입력된 것을 볼 수 있다. 그리고 0xbfffe96c에 ret 주소가 적혀 있는 것도 확인 할 수 있다. 이 둘 사이의 거리를 계산해보면, (buf + sfp) (268) + ret(4) 가 된다. 따라서 "A"*268 + "0xbffffbfc"(sh..

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 7. 02:37

    [Write-up] Level 11

    HINT : attackme의 소스인것 같다 strcpy함수는 bof에 취약한 함수이며, argv[1]의 값을 받아서 str로 저장한다. bof로 우리가 원하는 실행을 하도록 ret값을 바꿔주면 되겠다. gdb로 attackme를 까보니 HINT의 코드와 일치한걸 확인 할 수 있다. bof를 하기위해 우선 환경변수에 shellcode를 추가해 보자. 잘 추가 되었다. 이제 gdb로 shellcode가 들어간 주소를 확인해 보자. 0xbfffffa8 을 보면 환경변수로 추가해준 \x90 + shellcode가 있음을 확인 할 수 있다. 이 주소를 잘 기억해 두었다가 bof시 조작할 ret값에 넣어 주면 쉘을 딸 수 있다. 자 이제 ret까지의 크기를 확인해 보자. 우선 ret에 들어있는 값을 확인해 보면 ..

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 6. 21:12

    [Write-up] Level 10

    HINT : 공유 메모리를 해킹해라, key_t 값은 7530 공유 메모리를 생성하여 안에 적혀있는 데이터를 읽어오면 될 것 같다. 우선 공유 메모리 생성 방법부터 알아보자. 그렇다고 한다. 이것을 이용하여 코드를 작성해 보자. shmget으로 공유메모리를 생성하고, shmat으로 연결하여, 데이터를 출력하면 된다. 작성한 코드를 실행 시키면 level11의 password를 알아 낼 수 있다. 이제 level11로 올라가 보자.

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 6. 17:56

    [Write-up] Level 9

    HINT : /usr/bin/bof의 소스코드 코드를 보면, buf의 크기는 10인데, fgets함수를 통해 buf에 40만큼 쓰게되어 버퍼 오버플로우가 일어난다. 버퍼오버플로우를 이용하여 buf2에 go가 들어가게 하면 level10의 권한을 얻을 수 있을 것이다. gdb로 buf와 buf2사이의 크기를 확인해 보았다. 첫번째 상자에서 ebp-40은 위의 소스코드를 확인했을때 buf의 위치임을 알 수 있다. 두번째 상자에서 ebp-24는 buf2의 위치임을 알 수 있다. buf와 buf2 사이의 크기는 40-24인 16이다. 따라서 글자 16개 입력 후 go를 입력해주면 조건문을 통과하여 level10의 권한을 얻을 수 있을 것이다. 이제 level10으로 올라가 보자.

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 6. 17:13

    [Write-up] Level 8

    HINT : level9의 shadow 파일이 숨겨져 있다. 크기는 2700이다. 크기가 2700인 것을 알고 있으니 2700크기의 파일을 찾아보자. /etc/rc.d/found.txt가 뭔가 의심스러워 확인해 보았다. 예상대로 level9의 shadow 파일이다. 이제 이 파일에 적혀진 level9의 password를 복호화만 해주면 된다. shadow파일을 복호화하기 위해 John the Ripper라는 툴을 사용했다. 복호화에 성공하여 level9의 password를 얻었다. 이제 level9로 올라가 보자.

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 6. 16:33

    [Write-up] Level 7

    HINT : 패스워드는 가까운곳에, 2진수->10진수, 공학용 계산기 /bin/level7을 실행시키면 password 입력 창이 뜬다. 아무 값 123을 넣어 보니 /bin/wrong.txt가 없다고 한다. 처음에는 /bin/wrong.txt파일이 없는 상태에서 푸는 문제인 줄 알았는데, 저 파일이 없으면 문제를 풀 수 없는 문제였다. /bin/wrong.txt의 내용은 --_--_- --____- ---_-__ --__-_- 이다. 내용을 알고 있으니 한 번 풀어보자. 공백을 기준으로 나눠보면 저렇게 2진수를 알 수 있다. 2진수를 10진수로 바꾸고, 10진수를 ASCII code로 바꿔보면 mate라는 단어가 나온다. 파일 내용만 알면 쉽게 풀 수 있는 문제였다. 이제 level8로 올라가 보자.

    Pwnable Write-Up/01.hackerschool F.T.Z 2019. 12. 6. 15:43

    추가 정보

    페이징

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

    티스토리툴바