ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [35C3 CTF][Pwn] 1996
    CTF write_up/기타 CTF 2019. 5. 28. 14:37

     

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    #include <iostream>

    #include <unistd.h>

    #include <stdlib.h>

     

    using namespace std;

     

    void spawn_shell() {

        char* args[] = {(char*)"/bin/bash"NULL};

        execve("/bin/bash", args, NULL);

    }

     

    int main() {

        char buf[1024];

     

        cout << "Which environment variable do you want to read? ";

        cin >> buf;

     

        cout << buf << "=" << getenv(buf) << endl;

    }

     

    Spawn_shell함수는 있지만 main함수에는 쓰여서 의심이 갔습니다.

    gdb 이용해서 분석을 해보겠습니다.

    소스코드 에서는 buf 1024만큼의 크기를 줬는데 gdb 확인해본 결과 0x408 = 1032만큼의 크기가 주어져 있습니다.

    그렇다면 다음과 같이 이루어져 있는 같습니다.

    buf[1024] + dummy[8] + SFP[8] + RET[8] 되어 있는 같습니다.

    1024+8+8+8=1048 만큼 무작위로 입력을 해준 뒤에 main함수에 없엇던 spawn_shell함수를 호출해서 확인해 보도록 하겠습니다.

    Spawn_shell 함수의 시작 주소는 400897입니다.

     

    Flag.txt 파일을 확인했더니 flag값이 나왔습니다.

     

    Flag : 35C3_B29A2800780D85CFC346CE5D64F52E59C8D12C14

     

    'CTF write_up > 기타 CTF' 카테고리의 다른 글

    [35C3 CTF][Forensic] epic_mount  (0) 2019.05.28
    [35C3 CTF][Forensic] rare_mount  (0) 2019.05.28
    [RC3CTF][Forensic] Breaking-News  (0) 2019.05.28
    [RC3CTF][Forensic] Graphic-Design  (0) 2019.05.28
    [RC3CTF][Forensic] My Lil Droid  (0) 2019.05.28

    댓글

Designed by Tistory.