상세 컨텐츠

본문 제목

04.Pwntools Shellcode(Shellcraft)

Pwnable Exploitation/01.Shellcode

by RACC8N 2020. 5. 4. 20:37

본문

Local Shellcode

- shellcraft 모듈에서는 sh() 함수를 이용해 간단하게 "/bin/sh" 를 실행하는 shellcode를 생성할 수 있다.

  • 해당 함수는 aarch64,amd64,arm,i386,mips,thumb 아키텍처의 linux, freebsd 운영체제에 맞는 shellocode를 생성 할 수 있다.

  • 다음과 같이 아키텍처와 운영체제를 선택한 후 sh() 함수를 호출하면, 해당 조건에 맞는 shellcode를 리턴한다.

shellcraft.i386.linux.sh()

[EXAMPLE]

Bind Shellcode

- shellcraft 모듈에서는 bindsh() 함수를 이용해 간단하게 bind shellcode를 생성 할 수 있다.

  • 해당 함수는 amd64,mips,thumb 아키텍처의 linux 운영체제에 맞는 bind shellocode를 생성 할 수 있다.

  • 다음과 같이 아키텍처와 운영체제를 선택한 후 bindsh() 함수를 호출하면, 해당 조건에 맞는 shellcode를 리턴한다.

    • 첫번째 인자는 사용할 Port 번호를 전달한다.

    • 두번째 인자는 사용할 네트워크가 'ipv4','ipv6' 인지 전달한다.

shellcraft.amd64.linux.bindsh(port, network)

[EXAMPLE]

Reverse Shellcode

- shellcraft 모듈에 connect(), findpeersh() 함수를 이용해 간단하게 reverse shellcode를 생성 할 수 있다.

  • connect 함수를 이용해 네트워크 연결에 필요한 소켓을 생성 및 host에 연결하는 shellcode를 생성 한다.
    • connect() 함수는 aarch64,amd64,arm,i386,mips,thumb 아키텍처의 linux 운영체제만 지원한다.

    • 전달될 인자 값은 다음과 같다.

      • 첫번째 인자 값은 연결할 IP 주소를 전달한다.

      • 두번째 인자 값은 연결할 Port를 전달한다.

      • 세번째 인자 값은 연결할 네트워가 'ipv4','ipv6'인지 전달한다.

  • findpeersh() 함수는를 이용해 connect 함수에 의해 생성된 소켓에 표준 스트림을 복제(링크) 한다.

    • findpeersh() 함수는 amd64,i386,mips,thumb 아키텍처의 linux 운영체제만 지원한다.

    • 첫번째 인자 값으로 connect() 함수에 전달된 port 번호를 전달한다.

shellcraft.i386.linux.connect(host, port, network)
shellcraft.i386.linux.findpeersh(port)

[EXAMPLE]

 

 

REF: https://www.lazenca.net/pages/viewpage.action?pageId=14712942

 

05.Pwntools Shellcode(Shellcraft) - TechNote - Lazenca.0x0

Excuse the ads! We need some help to keep our site up. pwntools에서는 편리한 shellcode 생성을 위해 shellcraft 모듈을 제공합니다.해당 모듈은 아래와 같이 아키텍처별, 운영체제별로 지원합니다.자세한 정보는 ht

www.lazenca.net

 

'Pwnable Exploitation > 01.Shellcode' 카테고리의 다른 글

03.Bind & Reverse Shellcode  (0) 2020.05.04
02.Basic & Change permissions Shellcode  (0) 2020.05.04
01.The basics technique of Shellcode  (0) 2020.05.04

관련글 더보기

댓글 영역