ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • gdb 실행중 pipe로 입력 받기
    카테고리 없음 2025. 2. 24. 11:25

     

     

     

     

    gdb 실행중에 python이나 binary file을 통해 디버깅중인 프로그램에 표준 입력(stdin)을 주려면 어떻게 해야될까?

    나는 linux의 mkfifo를 이용해 보았다.

     

    일단 mkfifo /path/to/myfifo 이렇게 해서 fifo 파일을 만든다.

     

    그리고 다음 코드를 작성한다.

    #pipe.py
    
    import sys
    import os
    
    fd = os.open("/path/to/myfifo", os.O_RDONLY | os.O_NONBLOCK)
    with os.fdopen(fd, "rb") as f:
      while True:
        data = f.read()
        if data == None:
          continue
        sys.stdout.buffer.write(data)
        sys.stdout.flush()

     

    그 다음

    gdb) r < <(python pipe.py)
    브레이크 포인트 걸고 이렇게 실행한 다음, 메모리 값 같은 거 확인해서 페이로드 작성한 다음

    다른 shell을 열든 어떻게든 해서 /path/to/myinfo에 값을 쓴다! 그러면 디버깅 중인 프로그램의 stdin에 그 값이 써진다!

     

    나는 cat exploit.bin > /path/to/myinfo 이렇게 해서 gdb로 관측한 메모리 덤프를 기반으로 exploit을 작성해서 한 번 넣어 보았다.

     

    댓글

Designed by Tistory.