[System Hacking] 툴 설치하기
버그(bug)
실수로 발생한 프로그램의 결함
디버거(debugger)
버그를 없애기 위해 사용하는 도구.
gdb(GNU debugger)
리눅스의 대표적 디버거.
오픈소스 개발로 무료로 설치 가능하며, 다양한 플러그인 존재.
entry
ELF(Executeable and Linkable Format)
헤더 : 실행에 필요한 여러 정보가 적혀있음
-진입점(Entry Point, EP) : os가 ELF를 실행할때 진입점값부터 프로그램 실행
섹션 : 컴파일된 기계어 코드, 프로그램 문자열을 비롯한 여러 데이터 포함
context
프로그램의 실행과정을 관찰하기 위해 주요 메모리들의 상태 파악할 수 있게 도와줌
1. REGISTERS : 레지스터 상태
2. DISASM : rip부터 여러줄에 걸쳐 디스어셈블된 결과
3. STACK : rsp부터 여러줄에 걸친 스택의 값
4. BACKTRACE: 현 rip에 도달할때까지 어떤 함수들이 중첩되어 호출되었는지
break & continue
break : 특정 주소에 중단점(breakpoint)을 설정하는 기능
continue : 중단된 프로그램을 계속 실행시키는 기능
run
단순히 실행만 시킴
disassembly
gdb가 기본적으로 제공하는 디스어셈블 명령어.
(u, nearpc, pdisass 등)
navigate
ni : 어셈블리 명령어 한줄 실행, 서브루틴 내부 x
si : 어셈블리 명령어 한줄 실행, 서브루틴 내부 o
finish : 함수 끝까지 한번에 실행
examine
x : 특정 주소에서 원하는 길이만큼의 데이터를 원하는 형식으로 인코딩하여 볼 수 있음
telescope
메모리 덤프 기능. 메모리가 참조하고 있는 주소를 재귀적 탐색하여 값을 보여줌
vmmap
가상 메모리 레이아웃을 보여줌. 파일이 매핑된 경우 해당 파일 경로까지 보여줌
pwntools
익스플로잇 제작의 간편화에 영향
1.process & remote
process : 익스플로잇을 로컬 바이너리를 대상으로 할때 사용하는 함수
remote : 원격 서버를 대상으로 할떄 사용하는 함수
2.send
데이터를 프로세스에 전송하기 위해 사용
3.recv
프로세스에서 데이터를 받기 위해 사용
4.packing & unpacking
값을 리틀 엔디언의 바이트 배열로 변경, 혹은 그 역의 경우
5. interactive
셀을 획득햇거나, 익스플로잇의 특정 상황에 직접 입력을 주면서 출력을 확인하고 싶을 때 사용하는 함수
6. ELF
ELF 헤더에 익스폴로잇에 사용될 수 있는 각종 정보 기록
7.context.log
익스플로잇의 디버그 편의 제공
8.context.arch
아키텍처의 정보를 프로그래머가 지정할 수 있도록 함.
9. shellcraft
자주 사용하는 셸코드들이 저장되어 쉽게 꺼내 씀
10. asm
어셈블리 코드를 기계어로 어셈블 기능.