일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- WarGame
- ftz
- 시스템해킹
- 순서도
- Webhaking
- 비박스
- 웹
- bee-box
- XSS
- 소프트웨어보안
- System
- 네트워크보안
- webhacking
- CodeEngn
- Web
- TCP
- 네트워크
- dreamhack
- 웹해킹
- reversing
- 드림핵
- 해킹
- network
- 소프트웨어
- 모의해킹
- hacking
- 시스템
- 알고리즘
- 워게임
- 리버싱
- Today
- Total
Without a Break
[Dreamhack] Tool: gdb 본문
debugee.c 파일을 생성한 뒤 디버그 파일을 실행시킨다.
실행하면 다음과 같이 뜬다.
start
ELF : 리눅스의 실행 파일 형식
EP(Entry Point) : ELF의 헤더 중 진입점 필드
debugee 파일을 readelf로 확인해 본 결과, debugee의 진입점은 0x1060이라는 것을 알 수 있다.
gdb debugee로 들어가 pwndbg에 start 명령을 입력하면
마찬가지로 진입점의 주소를 확인할 수 있다.
Context
context는 크게 registers, disasm, stack, backtrace의 4개의 영역으로 나눈다.
registers | 레지스터의 상태를 보여줍니다. |
disasm | rip부터 여러 줄에 걸쳐 디스어셈블된 결과를 보여줍니다. |
stack | rsp부터 여러 줄에 걸쳐 스택의 값들을 보여줍니다. |
backtrace | 현재 rip에 도달할 때까지 어떤 함수들이 중첩되어 호출됐는지 보여줍니다. 곧 예시를 들어 더 자세히 설명하겠습니다. |
break & continue
break는 특정 주소에 중단점을 설정하는 기능이고, continue는 중단된 프로그램을 계속 실행시키는 기능이다.
중단된 start 함수부터 main 함수까지 실행시키면 다음과 같이 실행된다.
run
단순히 실행만 시킨다.
앞에서 main 함수에 중단점을 설정해놨기 때문에 run 명령어를 실행해도 main 함수에서 실행이 멈춘다.
disassembly
gdb는 프로그램을 어셈블리 코드 단위로 실행하고, 결과를 보여준다.
프로그램의 코드는 기계어로 이루어져 있으므로, gdb는 기계어를 디스어셈블하는 기능을 기본적으로 탑재하고 있다.'
u,nearpc, pdisassemble는 pwndbg에서 제공하는 디스어셈블 명령어이다.
main 함수를 디스어셈블한 모습
navigate
관찰하고자 하는 함수의 중단점에 도달했으면, 그 지점부터는 명령어를 한 줄씩 자세히 분석해야 한다.
이 때 사용하는 명령어로 ni와 si가 있다.
next instruction
ni를 입력하면 printf 함수 바로 다음으로 rip이 이동한 것을 확인할 수 있다.
step into
si를 입력하면 printf 함수 내부로 rip가 이동한 것을 확인할 수 있다.
finish
finish 명령어를 사용하여 함수의 끝까지 한 번에 실행할 수 있다.
examine
가상 메모리에 존재하는 임의 주소 값을 관찰해야할 때가 있다. 이를 위해 gdb에서는 x라는 명령어를 제공한다.
x를 이용하면 특정 주소에서 원하는 길이 만큼의 데이터를 원하는 형식으로 인코딩하여 볼 수 있다.
예시) rsp부터 80바이트를 8바이트씩 hex 형식으로 출력
telescope
pwndbg가 제공하는 강력한 메모리 덤프 기능으로, 메모리가 참고하고 있는 주소를 재귀적으로 탐색하여 값을 보여줌
vmmap
가상 메모리의 레이아웃을 보여준다.
어떤 파일이 매핑된 영역일 경우, 해당 파일의 경로까지 보여준다.
'Pwnable > Dreamhack' 카테고리의 다른 글
[Dreamhack] Memory Corruption: Stack Buffer Overflow (0) | 2022.10.30 |
---|---|
[Dreamhack] Exploit Tech: Shellcode (0) | 2022.10.30 |
[Dreamhack] Computer Architecture (0) | 2022.10.05 |
[Dreamhack] Linux Memory Layout (0) | 2022.10.05 |
[Dreamhack] Tool: Enviroment Setup (0) | 2022.09.27 |