pwntools 모듈 정리

2019. 2. 22. 18:46pwnable

pwntools 설치 

- pip install pwntools


* apt-get install libcapstone-dev도 해줘야 한다.




사용하기


from pwn import *


연결 방법


- nc : remote


r = remote( ip 또는 localhost, port )


- local : process


p = process( path )




데이터 받기


r = remote( localhoat, 7777 )


- recv() : 데이터 받기


data = r.recv()


tmp = r.recv(4) // 4바이트만큼 받겠다는 의미


- recvline() : 1줄 받기


data = r.recvline()


- recvuntil(value) : value 부분까지 데이터 받기


ex) recvuntil(abcd)이면 ~abcd까지 데이터를 받는다.


data = r.recvline(abcd)




데이터 보내기


r = remote( localhoat, 7777 )


- send(value) : value를 보낸다. 


read()함수입력값을 받을 때 사용한다.


r.send("abcd")


- sendline(value) : 데이터 한줄을 보낸다. 

* (아직 사용해보지 않았다. )


r.sendline(value)




packing 함수


- p32(value) : 32bit 리틀 엔디안 방식으로 패킹


1. p32(ABCD) = \x68\x67\x66\x65

2. p32(0x804832c) = \x2c\x83\x04\x08


- p64(value) : 64bit 리틀 엔디안 방식으로 패킹




unpacking 함수


- u32(str) : 32bit 리틀 엔디안 방식으로 언패킹


  반환값은 int, str은 패킹된 string


- u64(str) : 64bit 리틀 엔디안 방식으로 언패킹




interactive 함수


r = remote( localhoat, 7777 )


- interactive() : 쉘과 직접적으로 명령을 전송, 수신할 수 있는 함수


r.interactive()




ELF 함수


: 바이너리에 적용되어있는 보호기법을 보여주고, plt, got 등의 정보를 가져올 수 있다.


elf = ELF("./(파일 이름)")


r = remote( localhoat, 7777 )


- plt , got 정보 가져오기


read_plt = elf.plt['read'] // read 함수의 plt 

read_got = elf.got['read'] // read 함수의 got


'pwnable' 카테고리의 다른 글

tool  (0) 2019.02.22