GDB
GDB(GNU debugger)는 GNU 소프트웨어 시스템을 위한 표준 debugger이다.
실행 방법
gdb [프로그램명]
종료 방법
q (quit_
Ctrl + d
소스 보기
( gdb 실행 시 소스 폴더에서 구동해야 가능함. )
l : main 함수를 기점으로 소스 출력
l 10 : 10행을 기준으로 출력
l func : func 함수의 소스를 출력
브레이크 포인트
( 프로그램을 브레이크 포인트에 멈춰서 그 때의 상황을 파악하면서 확인할 때 사용 )
b func : func 함수의 시작 부분에 브레이크 포인트 설정
b 10 : 10행에 브레이크 포인트 설정
프로그램 실행, 종료 ( run kill )
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의 값을 입력
pwndbg
pwngdb란 gdb 의 plugin으로, heap 관련 문제를 풀 때 유용하다.
명령어의 실행마다 레지스터, 스택, 실행 중인 코드의 정보 등을 색깔과 함께 보여주며 exploit에 유용한 기능을 많이 포함하고 있다.
* hello world를 출력하는 hello를 이용해 pwndbg의 사용법을 익혀보겠다.
continue(c) : 프로세스가 멈추어있는 상태에서 프로세스를 이어서 실행시켜준다.
start : 프로그램을 실행시켜준다.
quit(q) : 디버거를 종료할 수 있다.
pwndbg 장점
실제 레지스터와 메모리 구조를 한 눈에 볼 수 있다.
레지스터를 하나씩 확인하면서 프로그램을 따라갈 수 있다.
프로그램 작동 원리, 오류 및 해결 방안에 대해서 훨씬 쉽게 접근할 수 있음.
참고
동빈나 - 시스템 해킹 강좌 10강 - 디버깅 시작하기(strace,pwndbg 활용법)
5log.tistory.com/148
jiravvit.tistory.com/entry/pwndbg%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-ELF-%EB%8F%99%EC%A0%81-%EB%B6%84%EC%84%9D-%EB%B0%A9%EB%B2%95
'Hacking > Pwnable' 카테고리의 다른 글
[Pwnable] ELF 동적 분석 (0) | 2021.03.01 |
---|---|
[Pwnable] Dreamhack - Memory Corruption - C (I) (0) | 2021.02.28 |
[Pwnable] pwntools 주요 사용법 (feat. Dreamhack) (0) | 2021.02.27 |
[pwnable] Ubuntu 16.04에 Pwntools, Pwndbg 설치하기 (0) | 2021.02.26 |
[Pwnable] IDA Pro 사용법 (0) | 2021.02.26 |