-
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 [바이너리]를 통해 원하는 바이너리를 디버깅할 수 있다.
start 명령어는 main 함수의 프롤로그까지 프로그램을 실행한다.
run 명령어는 프로그램을 실행한다. 따로 breakpoint를 지정하지 않았다면 프로그램이 종료될때까지 실행한다.
quit 명령어는 GDB를 종료한다.
breakpoint 명령어는 주어진 지점에 breakpoint를 설정한다. 이대로 run을 입력하면 <main+9> 직전까지 프로그램이 실행될 것이다.
continue 명령어는 다음 breakpoint까지 프로그램을 실행한다.
BREAKPOINT 브레이크포인트
info b 명령어는 모든 breakpoint의 정보를 보여준다.
delete 명령어는 해당 번호의 breakpoint를 삭제한다.
disable/enable 명령어는 해당 번호의 breakpoint를 비활성화/활성화한다.
MEMORY 메모리
libd/ld/codebase 명령어는 각각의 base address를 알려준다.
vmmap 명령어는 매핑된 메모리의 정보를 보여준다.
PRINT 출력
print 명령어는 변수나 함수의 정보를 출력한다.
format 변수 d, x, t, a는 각각 10진수, 16진수, 2진수, 주소의 형식으로 값을 출력한다.
x 명령어는 메모리의 정보를 출력한다. x/[반복 횟수][출력 사이즈][출력 형식]와 같은 식으로 작동한다.
출력 사이즈 b, h, w, g는 각각 1byte, 2byte, 4byte, 8byte로 정보를 출력한다.
MISC 기타
disassemble 명령어는 인자로 전달된 함수의 코드를 어셈블리로 변환해 보여준다.
checksec 명령어는 바이너리에 적용된 보호 기법을 보여준다.
'CTF > TOOL' 카테고리의 다른 글
Oneshot gadget (0) 2021.01.08 pwntools (0) 2021.01.08 WSL2 (0) 2021.01.08