[Dreamhack]pwntools

최윤지·2024년 3월 14일

System Hacking

목록 보기
5/9

pwntools

pwntools API 사용법

process & remote

process 함수: 익스플로잇을 로컬 바이너리를 대상으로 할 때 사용하는 함수

  • 익스플로잇을 테스트하고 디버깅하기 위해 사용

remote 함수: 원격 서버를 대상으로 할 때 사용하는 함수

  • 대상 서버를 실제로 공격하기 위해 사용

send

send 함수: 데이터를 프로세스에 전송하기 위해 사용하는 함수

recv

recv 함수: 프로세스에서 데이터를 받기 위해 사용하는 함수

  • recv()와 recvn()의 차이점
    • recv(n): 최대 n 바이트를 받는 것이므로 그만큼을 받지 못해도 에러를 발생시키지 않음
    • recvn(n): 정확히 n 바이트의 데이터를 받지 못하면 계속 기다림

packing & unpacking

어떤 값을 리틀엔디안 방식으로

  • packing하는 함수
    p32(), p64()

  • unpacking하는 함수
    u32(), u64()

* hex 함수: 16진수로 변환해주는 함수

interactive

interactive 함수: 셸을 획득했거나, 익스플로잇의 특정 상황에 직접 입력을 주면서 출력을 확인하고 싶을 때 사용하는 함수

  • 호출하고 나면 터미널로 프로세스에 데이터를 입력하고, 프로세스의 출력을 확인할 수 있음

ELF

ELF 헤더에는 익스플로잇에 사용될 수 있는 각종 정보가 기록되어 있음

context.log

익스플로잇에 버그가 발생하면 익스플로잇도 디버깅해야 함

  • pwntools에는 디버그의 편의를 돕는 로깅 기능 존재
  • 로그 레벨은 context.log_level 변수로 조절 가능

context.arch

pwntools는 공격 대상의 아키텍처에 영향을 받음
=> pwntools는 아키텍처 정보를 프로그래머가 지정할 수 있게 하며, 이 값에 따라 몇몇 함수들의 동작이 달라짐
=> 아키텍처 정보를 지정하는 변수 context.arch 사용

shellcraft

shellcraft.sh(): 셸을 실행하는 셸 코드

asm

asm(): 셸 코드를 기계어로 어셈블

0개의 댓글