Profile

머리정리하는곳

c2w2m2

Pwntools 기본적인 사용법 - 1

그냥 간단간단하게 정리해서 모르는사람들한테 뿌리기 위한 용도로 써봅니다.


설치는 생략합니다.. 이미 많이 정리 해놓은게 많아서 그거 보고 하시는게 훨배 좋아영






먼저 중요한 연결부분입니다


1. NC 


가장 많이 사용하는 nc 같은 경우는 remote( IP , PORT ) 형식으로 연결합니다. 여기서 IP 는 string 이고 PORT 는 int 형임에 주의합시다

ex) p = remote("localhost", 1234)


2. Local


그다음 nc 다음으로 많이 쓰는 local 같은 경우는 process( PATH ) 식으로 연결합니다. PATH 는 마찬가지로 string 입니다

ex) p = process("./test")


3. SSH


젤 많이 안쓰지만 pwnable.kr 쓸 경우 많이 나옵니다. ssh ( USERNAME , IP , PORT, PASSWORD ) 꼴로 연결합니다. USERNAME, IP, PASSWORD 같은 경우는 string 이고 PORT 는 int 입니다. PORT 와 PASSWORD 는 각각 앞에 port= , password= 를 붙입니다.


단 ssh 는 run 이라는 함수가 있는데 이를 이용하여 쉘을 띄워주고 해줍시다


ex) p = ssh("test", "localhost", port=1234, password="test")

ex2) p2 = p.run("/bin/sh")






다음은 recv 와 send 에 대해 간단히 알아봅시다.






이런식으로 일반적인 인간의 손으론 풀 수 없는 문제가 있다고 봅시다.


이럴경우 pwntool 을 이용하여 간단히 쓱싹 할 수 있습니다.


먼저 recv 를 통해 passcode 를 받아옵니다. 다음 3가지 함수를 이용해 해봅시다.




1. recvline()


이름처럼 1줄 받아옵니다.


tmp = p.recvline()

passcode= tmp[tmp.find(':')+2:len(tmp)-1]


or


passcode = p.recvline()[10:]


식으로 passcode 를 받을 수 있지만, 이런 케이스에서는 비추합니다. 


2. recvuntil(str)


str 까지 받아옵니다


아래 recv 랑 혼합하여 주로 사용합니다


3. recv(int)


int 만큼 만 받아옵니다


p.recvuntil('Passcode : ')

passcode = p.recv (2048)


이런식으로 passcode 를 받을 수 있고 더 간단하니 이런 케이스에서는 주로 이렇게 사용합니다




그외  recvall 등등있지만 저는 주로 저 3가지만 사용합니다.

어찌됬던 받은 후 send 를 이용해서 보냅시다.

send 는 send 와 sendline 2가지가 있는데 말그대로 보내느냐, 한줄 보내느냐 차이입니다. 간단하니 사용법은 생략하겠습니다.















이런식으로 간단한 recv send 를 해봤고 그 다음으로는 exploit 짤때 유용한 여러가지를 해봅시당

'Analysis' 카테고리의 다른 글

Pwntools 기본적인 사용법 - 2  (0) 2017.10.11
PPR 없이 ROP  (0) 2017.09.28
SROP  (0) 2017.08.25
Off By One  (3) 2017.08.24
2차원 배열 분석  (0) 2017.08.19