pwntools 사용해서 ssh 연결
2018. 7. 23. 15:36
1 2 3 | s = ssh(user='myria',host='sherlock.myria.break',port=1234,password='asdf') p = s.process("./binary") | cs |
위와 같이 하면 ssh서버에서 process로 바이너리 실행해서 exploit할 수 있다.
1 2 | s = ssh(user='myria',host='sherlock.myria.break',port=1234,password='asdf') conn = s.connect_remote('localhost', 1235) | cs |
remote접속도 마찬가지로 저렇게 가능.
ssh()의 경우에는 말 그대로 ssh 리모트 연결을 해주는 함수인데, 포트와 패스워드는 디폴트값으로 22와 guest가 설정되어 있다.
ssh로 연결해줄때, 유저네임과 호스트명은 필수지만 포트와 패스워드는 필수가 아니다. 하지만 원하는 연결을 하기 위해서는 이 두 가지도 설정
그리고 배열을 통해 whoami등의 명령의 결과를 알아낼 올 수 있는데
이는 ssh연결을 하는 순간, 리스트에 있는 명령어들의 결과를 배열로 저장해서 필요에따라 보여주는 것
또한 run()을 이용해서 /bin/sh 등과 같은 프로그램을 리모트에서 실행하는 것도 가능하며 sendline()으로 커맨드를 실행하는 것도 가능.
1 2 3 4 5 6 7 8 9 10 11 | from pwn import * shell = ssh("fd", "pwnable.kr", port=2222, password="guest") print(shell['whoami']) sh = shell.run('/bin/sh') sh.sendline("echo test") print(sh.recvline(timeout=3)) shell.close() | cs |
'Pwnable!!' 카테고리의 다른 글
Heap Overflow Chunk Size 조작 (feat. invalid next size ) (0) | 2018.10.09 |
---|---|
gdb에서 __malloc_hook / __free_hook 주소 찾기 (0) | 2018.10.06 |
setvbuf란? (0) | 2018.07.10 |
bash drop privileges (0) | 2018.07.06 |
매직 가젯, 원샷 가젯 (64bit O / 32bit eax라면 O/ rax X) (0) | 2018.05.28 |