pwntools API 정리
그동안 개념을 공부한다고 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
- 생성한 쉘코드를 기계어로 변환하는것