본문 바로가기

0. 동아리/2) 전체공지

pwndbg 설치 방법 & 명령어

pwndbg

  • GDB 기반의 디버거
  • 편리한 인터페이스 제공 (기본적으로 제공되는 디버거보다 사용하기 편)

pwntools 설치 과정

더보기

$ sudo apt update

$ sudo apt install git-all

pwndbg 설치 과정

pwndbg 시작 명령어

gdb [실행시키고 싶은 프로그램명]

pwndbg가 정상적으로 실행된 화면

pwndbg 종료 명령어

q 또는 quit

 

pwndbg 명령어

  • list : 실행시킨 프로그램의 코드를 볼 수 있음 (보기만 가능)
  • disass main : 실행시킨 프로그램 안의 main 함수를 assembly code로 나타내줌.

disass main 예시

 

  • b 또는 break : 중단점을 지정할 수 있게 해주는 명령어로, 프로그램을 r(run) 했을 경우 정지할 지점을 정하는 것
  • e.g. b *0x00001209, b *main+28 (주소는 위의 그림 참조), b *main, b 숫자(행)

 

  • r 또는 run : gdb에 올라온 프로그램을 실행시키는 명령어로 중단점이 프로그램 실행 중 설정되어 있다면, 중담점에서 실행이 멈춤.
  • c : continue의 의미로 r과 같이 실행임.
  • n 또는 ni : 현재 행 하나 수행, 함수가 현재 행이라면 함수를 수행함.
  • s 또는 si : 현재 행 하나 수행, 함수가 현재 행이라면 함수 내부로 들어감.

특정 메모리 주소 값(상태) 살펴보는 명령어

보고자 하는 형식

  • t : binary : 2진수
  • o : octal : 8진수
  • d : demical : 10진수
  • u : unsigned demical : 부호없는 10진수
  • x : hex : 16진수
  • f : float
  • a : address
  • i : instruction : 어셈블리
  • c : char
  • s : string : 문자

보고자 하는 범위

  • b : 1byte
  • h : 2byte
  • w : 4byte
  • g : 8byte

사용법

x/[범위(숫자)][보고자 하는 형식][보고자 하는 범위]

  • x/16xw $esp : esp 레지스터를 기준으로 64바이트를 4바이트씩 쪼개어 16진수로 나타내라

x/16xw $esp

 

 

 이 외에도 많은 명령어가 pwndbg 안에 존재하는 데, 이는 pwndbg를 실행시킨 후 help all을 입력하면, pwndbg의 모든 명령어를 확인해볼 수 있다.