pwntools 기본 사용법

◎ pwntools 설치

apt-get update

apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential

python3 -m pip install --upgrade pip

python3 -m pip install --upgrade pwntools

 

◎ import

pwntools를 사용하기 위해서 파이썬 스크립트 상단에 import한다.

from pwn import *

from pwn import *

 

◎ pwntools 연결

    1. 원격인 경우 remote (IP,PORT)

       (ipstring이고 portint형이다.)

    2. 로컬인 경우 process (path) 로컬 상의 실행 파일을 불러온다.

       (path string이다)

    3. ssh(username,ip,port,password)형식으로 사용한다.

       (Username,ip,passwordstring이고 portint형이다.)

 

pwntools 데이터 받아오기

- recvline

: 한 줄 받아오기, 표준출력에서 한 줄을 읽어서 반환한다.

recvline(“str”)

 

- recvuntil

: str까지 받아오기, 표준 출력에서 str 이라는 문자열까지 읽어서 반환한다. 괄호 안에 있는 부분까지 데이터를 받는다.

recvuntil(str)

 

- recv()

: 연결된 대상으로 부터 데이터를 받는 코드이다.

 

 

pwntools 데이터 보내기

- send : 표준 입력에 “str”이라는 문자열을 넣어준다

send(“str”)

 

- sendline(“str”) : 데이터 한 줄 보내기, 표준 입력에 “str\n”이라는 문자열을 넣어준다

sendline(“str”)

 


 ▶swing_pwn_chall 풀이

코드

 

form pwn import *

p = process("./swing_pwn_chall")
for i in range(20)
	p.recuntil(":") 		문제의 숫자 앞까지 읽어 들이기
	x=int(p.recvuntil("+")[:-1]) 	+앞까지 읽어들이기 첫번째 항 읽기
	y=int(p.recvuntil("+")[:-1]) 	=앞까지 읽어들이기 두번째 항 읽기
	ans = x + y  			계산히기
	p.sendline(str(ans)) 		답을 프로그램에 입력
p.interactive() 

 

결과 화면

 

'보안 > 포너블' 카테고리의 다른 글

포너블 Day5 GDB 실행 과정  (0) 2021.05.12
포너블 Day5 GDB설치, 명령어  (0) 2021.05.12
포너블 Day4 collision 문제풀이  (0) 2021.05.05
포너블 Day3 리눅스 특수 권한  (0) 2021.05.05
[포너블 Day1]메모리 구조  (0) 2021.03.31

메모리 구조


 

1. 코드(텍스트) 영역

- 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고 부른다.

- cpu는 코드영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다.

- 코드 자체를 구성하는 메모리 영역으로 Hex파일이나 BIN파일 메모리다.

- 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역이다.


2. 데이터 영역

- 전역변수, 정적변수, 배열, 구조체 등이 저장된다.

- 프로그램이 실행 될 때 생성되고 프로그램이 종료 되면 시스템에 반환 된다.

- 함수 내부에 선언된 static 변수는 프로그램이 실행 될 때 공간만 할당되고, 그 함수가 실행될 때 초기화 된다.

 


3. BSS 영역

- 초기에 오직 제로 값으로 표시된 정적으로 할당된 변수가 포함된 데이터 세그먼트의 일부로 컴파일러나 링커에 의해 사용된다. 초기화되지 않은 전역 데이터를 위한 영역이다.

- compile time에 크기가 결정되고 이후에 변동되지 않는다.


 

4. 스택 영역

- 프로그램이 자동으로 사용하는 임시 메모리 영역이다.

- 지역변수, 매개변수, 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역이다.

- 함수 호출 시 생성되고, 함수가 끝나면 시스템에 반환 된다.

- 스택 사이즈는 각 프로세스마다 할당 되지만 프로세스가 메모리에 로드 될 때 스택 사이즈가 고정되어 있어 런타임 시에 스택 사이즈를 바꿀 수는 없다.

- 명령 실행 시 자동 증가,감소 하기 때문에 보통 메모리의 마지막 번지를 지정한다.

 


5. 힙 영역

- 필요에 의해 동적으로 메모리를 할당 하고자 할 때 위치하는 메모리 영역으로 동적 데이터 영역이라고 부르며 메모리 주소 값에 의해서만 참조되고 사용되는 영역이다.

- 이 영역의 데이터를 저장하기 위해서는 cmalloc(), c++new()함수를 사용한다. C언어에서는 자동으로 해체되지 않기 때문에 free()함수로 직접 해제해주어야 한다.

'보안 > 포너블' 카테고리의 다른 글

포너블 Day5 GDB 실행 과정  (0) 2021.05.12
포너블 Day5 GDB설치, 명령어  (0) 2021.05.12
포너블 Day4 collision 문제풀이  (0) 2021.05.05
포너블 Day3 리눅스 특수 권한  (0) 2021.05.05
[포너블 Day2] pwntools  (0) 2021.04.28

#1 글을 작성하고 블로그를 관리해보세요.

jiiihye님의 회원 가입을 진심으로 축하합니다. 이 글은 비공개로 작성돼 있습니다.
'편집'으로 내용을 바꾸시거나, 삭제 후 '새 글을 작성'하셔도 됩니다.
글 뿐만 아니라 블로그의 각종 설정을 변경할 수도 있습니다. '블로그관리'를 확인해보세요.

 

#2 다양한 스킨이 있어요.

티스토리에 있는 다양한 '스킨'도 살펴 보세요.
블로그나 사이트를 사용하는 목적에 맞게 스킨을 고를 수 있습니다.
어떤 이야기를 주로 하실 건가요? 잘 생각해 보시고, 마음에 드는 스킨을 고르세요.
'스킨 편집'을 통해 다양한 커스텀, 그리고 홈 꾸미기를 적용하실 수도 있답니다.

 

#3 포럼에서 사람들과 소통하세요.

마지막으로 사용하시다가 티스토리에 대해 궁금한 내용이 있다면 '포럼'을 확인하세요.
찾기 어려울 땐 직접 질문을 해보는 건 어떨까요? 친절한 티슷터 분들이 바로 답변해 줄 거에요.

+ Recent posts