pwndbg 설치 및 사용 방법

728x90

PWNDBG 설치

seKUrity에서는 pwndbg랑 tmux가 이미 설치된 서버에서 실습을 했지만 나중을 위해 설치 방법부터 알아보겠다.

 

🖇️https://github.com/pwndbg/pwndbg

 

GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy

Exploit Development and Reverse Engineering with GDB Made Easy - GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy

github.com

 

git clone [URL] [DIRECTORY]
git clone http://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

위 명령을 차례대로 실행한 후 설치가 완료되면 gdb [file name]을 입력해 pwndbg를 실행할 수 있다.

 

PWNDBG 주요 사용법

gdb [file name]: 실행

start: 프로그램 실행

q or [Ctrl + d]: 종료

 

ni: step over

si: step into

 

l: main 함수를 기점으로 소스 출력

l 10: 10행을 기준으로 출력

l func: func 함수의 소스를 출력

 

b func: func 함수의 시작 부분에서 브레이크 포인트 설정

b 10: 10행에 브레이크 포인트 설정

bl: 브레이크 포인트 리스트 출력

 

r: 프로그램 수행(재시작)

k: 프로그램 수행 종료

 

bt: 오류가 발생한 함수 역추적

 

s: 현재 출력된 행을 수행한 뒤 정지. (단, 함수의 경우 함수의 내부로 들어가 수행을 이어나간다.)

n: 현재 출력된 행을 수행한 뒤 정지. 함수의 경우 함수를 수행하고 넘어간다.

return 123: 현재 함수를 수행하지 않고 빠져나가며 리턴값이 123으로 설정된다.

 

info locals: 현 시점의 지역 변수들과 값을 알 수 있다.

p func : func 함수의 주소값을 확인할 수 있다.

 

p [변수명] : 변수 값을 출력한다.

p [변수명]@[배열크기] : 변수의 내용을 변수 배열의 크기 형태로 출력한다.

 

frame [N] : n번 스택 프레임으로 변경한다.

info frame : 현재 스택 프레임 정보를 출력한다.

 

x/[범위] [출력형식] [볌위의 단위] : 메모리의 특정 값들을 확인 할 수 있다. 

 

disas func : func 함수의 어셈블리 코드를 볼 수 있다.

 

call func(arg1, arg2) :  특정 함수 func를 arg1, arg2 파라미터를 포함하여 호출하고, 반환값을 출력한다.

 

jump 10 : 무조건 10행으로 분기하여 수행한다.

 

signal SIGKILL : 디버깅 대상의 프로세스에게 KILL 시그널을 보낼 수 있다. 

 

set {타입} [주소] = [값] : p 명령 대신에 set을 통해 메모리의 특정 주소에 저장하는 것이 더 일반적이다. 

set {int}0x8048300 = 100 : 해당 주소에 100의 값을 입력

 

728x90