오늘의 과제: pwntools의 기능을 공부하고 코드를 작성하여 보고서 작성
목차
● pwntools란 무엇인가?
● pwntools의 기초 사용법
더보기
○ pwntools 설치
○ pwntools 실행
● 소스코드
▶ pwntools란 무엇인가?
더보기
· exploit용으로 사용하냐, 다른 프로그램용으로 사용하냐에 따라 다름
· 역사적으론 exploit-writing DSL용도로 사용됨
· 아래 명령어로 간단히 실행 가능
>>> from pwn import *
· 2.0버전부터는 두가지 목적이 있음
· 보통의 파이썬 모듈 구조를 가짐으로써, 다른 사용자도 친숙하고 빠르게 pwntools사용
· 더 많은 side-effects 발견 (주로 터미널이 raw-mode로 돌아갈때)
· 이를 가능케하기 위해서 두가지 Python 모듈을 넣기로 함
▶ pwntools의 기초 사용법
더보기

pwn에 관한 모든것 import

remote(ip, port)

process([PATH])

ssh(username, ip, port, password)

recv(): 데이터 받음

recvline: 1줄 받아옴

recvuntil(value): 괄호안에 있는 부분(\n)까지 데이터를 받는다.

send(value): 괄호안의 있는 값(value)을 보냄

sendline(value): 데이터 한줄 보냄

p32 (value) : 32비트 리틀 엔디안 방식으로 패킹해주는 함수

빅 엔디안 방식( 낮은 주소에 데이터의 높은 바이트부터 저장하는 방식 )으로 패킹

64비트 리틀 엔디안 방식으로 패킹해주는 함수

빅 엔디안 방식

32비트 리틀 엔티안 방식으로 언패킹해주는 함수

64비트 리틀 엔티안 방식으로 언패킹해주는 함수

쉘과 직접적으로 명령을 전송, 수신할 수 있는 함수

elf = ELF("./filename") : ELF에 적용되어 있는 보호기법을 보여줌

▷ pwntools 설치
https://riemannk.tistory.com/9?category=926837 (3번 참고)
▷ pwntools 실행 (Python)
1) 사전준비

2) 연결고리 만들기



3) 데이터 받기



4) 데이터 보내기


5) 패킹 관련 함수

- (리틀 엔디안 방식: 주소에 데이터의 낮은 바이트부터 저장하는 방식)



6) 언패킹 관련 함수


7) interactive함수

8) ELF 함수

[ ELF정보(plt, got, symbols) 가져오기 ]

▶ 소스코드
'Layer7 > 동아리 숙제' 카테고리의 다른 글
Dreamhack 공부 내용 정리 및 문제풀이 (Reversing) (0) | 2020.08.07 |
---|---|
gdb를 활용한 간단한 바이너리 분석과 보고서 작성 (0) | 2020.07.12 |
모두의 코드 C pointer 문제풀이 (0) | 2020.07.03 |
Linux 환경 구축 (0) | 2020.06.28 |
C언어 pointer (0) | 2020.06.24 |