본문 바로가기

Layer7/동아리 숙제

python과 pwntools 활용법 익히기

오늘의 과제: pwntools의 기능을 공부하고 코드를 작성하여 보고서 작성

목차

pwntools란 무엇인가?

● pwntools의 기초 사용법

더보기

   ○ pwntools 설치

   ○ pwntools 실행

● 소스코드


pwntools란 무엇인가?

더보기

· exploit용으로 사용하냐, 다른 프로그램용으로 사용하냐에 따라 다름

· 역사적으론 exploit-writing DSL용도로 사용됨

· 아래 명령어로 간단히 실행 가능

   >>> from pwn import *

· 2.0버전부터는 두가지 목적이 있음

   · 보통의 파이썬 모듈 구조를 가짐으로써, 다른 사용자도 친숙하고 빠르게 pwntools사용

   · 더 많은 side-effects 발견 (주로 터미널이 raw-mode로 돌아갈때)  

· 이를 가능케하기 위해서 두가지 Python 모듈을 넣기로 함

 

 pwntools의 기초 사용법

더보기

   ▷ pwntools 설치

      https://riemannk.tistory.com/9?category=926837 (3번 참고)

   pwntools 실행 (Python)

1) 사전준비

pwn에 관한 모든것 import

 

2) 연결고리 만들기

remote(ip, port)
process([PATH])
ssh(username, ip, port, password)

 

3) 데이터 받기

recv(): 데이터 받음
recvline: 1줄 받아옴
recvuntil(value): 괄호안에 있는 부분(\n)까지 데이터를 받는다.

 

4) 데이터 보내기

send(value): 괄호안의 있는 값(value)을 보냄
sendline(value): 데이터 한줄 보냄

 

5) 패킹 관련 함수

     

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

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

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

 

6) 언패킹 관련 함수

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

 

7) interactive함수

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

 

8) ELF 함수

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

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

 

▶ 소스코드