gdb-peda 설치 및 사용법!
요즘 pwnable 문제의 binary를 분석하기위해 gdb를 종종 사용한다. write-up
등을 보다보면 gdb가 이쁘길래 어떻게 한 것인가 찾아보다가 gdb-peda를 알게 되었다!
- PEDA 개요
PEDA는 Linux환경에서 동작하며 binary분석 및 Exploit을 도와주는 도구이다!
PEDA : Python Exploit Development Assistance for GDB
의 약자이다.
pwnable.kr
의 bof
문제를 gdb-peda를 이용하여 실행시켜 보았다!
register
와code
stack
등이 실시간으로 보여진다!
- 설치
git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit
설치가 끝났다..!(?)
하지만 가아아아끔 gdb
와 gdb-peda
를 구분하여 사용하고싶을 때가 있을것이다!
그럴때를 위해
$ vi ~/.gdbinit
define init-peda
source ~/peda/peda.py # 경로
end
document init-peda
Initializes the PEDA (Python Exploit Development Assistant for GDB) framework
end
vi ~/.gdbinit에 위의 내용을 넣게되면 gdb와 gdb-peda를 구분하여 사용가능하다!
- 사용법 기본적으로 명령어는 gdb와 같다. 하지만 몇가지가 추가된다!
- disas
-
일반 disas
- peda disas
보다시피 peda의 disas는 알록달록 색깔이 칠해져 더 예쁘다!
- String 검색 기능!
peda에서는 find 명령어를 이용하여 String을 검색 가능하다!
위의 사진에서 볼 수 있다!
찾게된 /bin/sh
의 주소가 출력된다!
- checksec 아예 checksec이 내장되어있다! 꿀이다 꿀!
- 기타사항
공식페이지에 자세한 기능이 있다!
aslr -- Show/set ASLR setting of GDB checksec -- Check for various security options of binary dumpargs -- Display arguments passed to a function when stopped at a call instruction dumprop -- Dump all ROP gadgets in specific memory range elfheader -- Get headers information from debugged ELF file elfsymbol -- Get non-debugging symbol information from an ELF file lookup -- Search for all addresses/references to addresses which belong to a memory range patch -- Patch memory start at an address with string/hexstring/int pattern -- Generate, search, or write a cyclic pattern to memory procinfo -- Display various info from /proc/pid/ pshow -- Show various PEDA options and other settings pset -- Set various PEDA options and other settings readelf -- Get headers information from an ELF file ropgadget -- Get common ROP gadgets of binary or library ropsearch -- Search for ROP gadgets in memory searchmem|find -- Search for a pattern in memory; support regex search shellcode -- Generate or download common shellcodes. skeleton -- Generate python exploit code template vmmap -- Get virtual mapping address ranges of section(s) in debugged process xormem -- XOR a memory region with a key