강의 정리/드림핵 정리

pwntools API 정리

네른 2022. 2. 11. 17:45

그동안 개념을 공부한다고 pwntools 없이 했었는데, 이참에 이 모듈에는 익숙해져보기로 함

 

1. process

 - 로컬 바이너리를 대상으로 익스플로잇을 수행할 떄

 - p = process('프로세스명')

 

2. remote

 - 원격 서버를 대상으로 수행할 때

 - p = remote('사이트', '포트')

 

3. send/recv

 - 프로세스에 데이터 전송 및 받기

 - p.send() / p.sendline() / p.sendlineafter('문자열', 'aa') - 문자열이 출력된 후 aa\n를 입력

 - data = p.recv(128) -- 받은 데이터를 최대 128byte 만큼 data에 저장

 - data = p.recvn(128) -- 데이터를 딱 128byte 만큼 받음. 받을때까지 대기

 - data = p.recvuntil('문자열') -- 문자열을 받을 때 까지 계쏙받기

 

4. packing / unpacking

 - p32(0x41414141) : 0x41414141을 32비트 패킹하기(결과는 AAAA)

 - p64(0x4141414142424242) : 0x4141414142424242를 64비트로 패킹하기(결과는 AAAABBBB)

 - u32() / u64()

 

5. interactive

 - p.interactive : 직접 입력을 주고 출력을 볼 때 사용

 

6.  elf

 - e = ELF('프로세스명') : ELF 헤더 정보를 가져옴

 

7. context.log

 - exploit 로깅용

 

8. context.arch

 - 아키텍처 정보를 프로그래머가 지정

 - context(arch='amd64', os='linux') 와 같이 사용가능

 

9. shellcraft

 - 공격에 주로 사용되는 쉘코드들을 모아둔 모듈

 - payload = shellcraft.sh() : 쉘을 실행하는 쉘코드를 만드는것

 - 이 외에도 다양하게 있음 shellcraft.open() 이라거나 등등 

 - https://docs.pwntools.com/en/stable/shellcraft/amd64.html 여기서 볼 수 있음 (64bit 쉘코드)

 

10. asm

 - 생성한 쉘코드를 기계어로 변환하는것