ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • pwngdb
    CTF/TOOL 2021. 1. 8. 05:23

    PRELIMINARY 서론


    pwngdb는 pwn을 위한 GDB(GNU Debugger)이다. 명령어의 실행마다 레지스터, 스택, 실행 중인 코드의 정보 등을 색깔과 함께 보여주며 exploit에 유용한 기능을 다수 포함하고 있다.

     

    다음 명령어를 터미널에 입력해 pwngdb를 설치하자.

    $ cd ~
    $ git clone https://github.com/longld/peda.git ~/peda
    $ git clone https://github.com/scwuaptx/Pwngdb.git
    $ cp ~/Pwngdb/.gdbinit ~/

    gdb를 사용하기 위해서는 터미널에 gdb를 입력해주면 된다.

     

    다음은 pwngdb의 주요 기능과 사용법에 대해 알아보자.

     

    Control 제어


    바이너리의 이름을 인자로 gdb를 실행

    gdb [바이너리]를 통해 원하는 바이너리를 디버깅할 수 있다.

     

    start

    start 명령어는 main 함수의 프롤로그까지 프로그램을 실행한다.

     

    run(r)

    run 명령어는 프로그램을 실행한다. 따로 breakpoint를 지정하지 않았다면 프로그램이 종료될때까지 실행한다.

     

    quit(q)

    quit 명령어는 GDB를 종료한다.

     

    breakpoint(b)

    breakpoint 명령어는 주어진 지점에 breakpoint를 설정한다. 이대로 run을 입력하면 <main+9> 직전까지 프로그램이 실행될 것이다.

     

    continue(c)

    continue 명령어는 다음 breakpoint까지 프로그램을 실행한다.

     

    BREAKPOINT 브레이크포인트


    info(i) b

    info b 명령어는 모든 breakpoint의 정보를 보여준다.

     

    delete(d)

    delete 명령어는 해당 번호의 breakpoint를 삭제한다.

     

    disable/enable

    disable/enable 명령어는 해당 번호의 breakpoint를 비활성화/활성화한다.

    MEMORY 메모리


    libc/ld/codebase

    libd/ld/codebase 명령어는 각각의 base address를 알려준다.

     

    vmmap

    vmmap 명령어는 매핑된 메모리의 정보를 보여준다.

    PRINT 출력


     

    print(p)

    print 명령어는 변수나 함수의 정보를 출력한다.

     

    format

    format 변수 d, x, t, a는 각각 10진수, 16진수, 2진수, 주소의 형식으로 값을 출력한다.

     

    x

    x 명령어는 메모리의 정보를 출력한다. x/[반복 횟수][출력 사이즈][출력 형식]와 같은 식으로 작동한다.

    출력 사이즈 b, h, w, g는 각각 1byte, 2byte, 4byte, 8byte로 정보를 출력한다.

    MISC 기타


    disassemble(disas)

    disassemble 명령어는 인자로 전달된 함수의 코드를 어셈블리로 변환해 보여준다.

     

    checksec

    checksec 명령어는 바이너리에 적용된 보호 기법을 보여준다.

    'CTF > TOOL' 카테고리의 다른 글

    Oneshot gadget  (0) 2021.01.08
    pwntools  (0) 2021.01.08
    WSL2  (0) 2021.01.08

    댓글

Designed by Tistory.