그냥 간단간단하게 정리해서 모르는사람들한테 뿌리기 위한 용도로 써봅니다.
설치는 생략합니다.. 이미 많이 정리 해놓은게 많아서 그거 보고 하시는게 훨배 좋아영
먼저 중요한 연결부분입니다
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:]
2. recvuntil(str)
str 까지 받아옵니다
아래 recv 랑 혼합하여 주로 사용합니다
3. recv(int)
int 만큼 만 받아옵니다
p.recvuntil('Passcode : ')
passcode = p.recv (2048)
이런식으로 passcode 를 받을 수 있고 더 간단하니 이런 케이스에서는 주로 이렇게 사용합니다
이런식으로 간단한 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 |