pwntools 설치 가이드
아래 깃허브 오픈 소스로 공개된 자료를 통해 pwntools를 설치할 수 있다.
관련 자료 : https://github.com/Gallopsled/pwntools
pwntools API 사용법
(1) process / remote / send / recv
1. process & remote
✅ process : 익스플로잇을 로컬 바이너리를 대상으로 할 때 사용하는 함수 → 익스플로잇을 테스트하고 디버깅하기 위해 사용
✅ remote : 원격 서버를 대상으로 할 때 사용하는 함수 → 대상 서버를 실제로 공격하기 위해 사용
2. send
✅ send : 데이터를 프로세스에 전송하기 위해 사용
3. recv
✅ recv : 프로세스에서 데이터를 받기 위해 사용
- recv() : 최대 n 바이트를 받는 것이므로, 그만큼을 받지 못해도 에러를 발생시키지 않음
- recvn() : 정확히 n 바이트의 데이터를 받지 못하면 계속 기다림
(2) packing / unpacking / interactive / ELF
1. packing & unpacking
: 익스플로잇을 작성하다 보면 어떤 값을 리틀 엔디언의 바이트 배열로 변경하거나, 또는 역의 과정을 거쳐야 하는 경우가 있는데 이를 수행할 수 있는 함수들이다.
2. interactive
- 셸을 획득했거나, 익스플로잇의 특정 상황에 직접 입력을 주면서 출력을 확인하고 싶을 때 사용하는 함수- 호출하고 나면 터미널로 프로세스에 데이터를 입력하고, 프로세스의 출력을 확인할 수 있음
3. ELF- ELF 헤더에 익스플로잇에 사용될 수 있는 각종 정보가 기록되어 있음
(3) context / shellcraft / asm
1. context.log: 익스플로잇도 버그가 발생하면 디버깅을 해주어야 한다. 이를 위한 로깅 기능이 있으며 로그 레벨은 'context.log_level' 변수로 조절할 수 있다.
2. context.arch: pwntools는 공격 대상의 아키텍처에 영향을 받으므로 pwntools는 아키텍처 정보를 프로그래머가 지정할 수 있게 하며, 이 값에 따라 몇몇 함수들의 동작이 달라진다.
3. shellcraft
: pwntools에는 자주 사용되는 셸 코드들이 저장되어 있어서, 공격에 필요한 셸 코드를 쉽게 꺼내 쓸 수 있지만, 셸 코드 실행시 메모리 상태를 반영하지 못한다. 따라서 제약 조건이 발생하는 상황에서는 직접 셸 코드를 작성하는 것이 좋다.
4. asm
: 어셈블 기능을 제공하는 것으로, 아키텍처를 미리 정하는 것이 중요하다.
출처 : 드림핵 시스템 해킹 로드맵 (https://dreamhack.io/lecture/roadmaps/2)
'Security > System Hacking' 카테고리의 다른 글
[Dreamhack] tcache_dup write-up (0) | 2024.09.09 |
---|---|
[Exploit Tech] Shellcode (0) | 2024.09.09 |
[Tool] gdb (0) | 2024.09.09 |
[Dreamhack] ssp_001 (0) | 2024.09.01 |
[Dreamhack] ssp_000 write-up (2) | 2024.09.01 |