320x100

Pwntools

Pwntools는 파이썬으로 작성된 CTF(해킹 대회)와 익스플로잇 개발을 위한 도구 모음입니다. 이 라이브러리는 다양한 익스플로잇 작업을 쉽게 수행할 수 있도록 돕는 여러 기능을 제공합니다.

 

Stack 

스택은 거꾸로 자란다.

힙(Heap)은 컴퓨터 과학에서 동적 메모리 할당을 위한 데이터 구조 및 메모리 영역을 의미합니다.

buffer

 

기본 세팅 

 

 

Lucky draw 정적 분석 실습

Stack over flow

"Stack Overflow"는 일반적으로 프로그램이 스택 메모리를 초과하여 발생하는 오류입니다

 

  • $ wget {binary address}
  • # 바이너리에 실행 권한 부여
  • $ chmod +x lucky_draw
  • $ ./lucky_draw

IDA를 사용하여 lucky_draw 실행 후 바이너리 정적 분석

 

바이너리 파일을 실행시켜 문제가 어떻게 돌아가는지 점검을 해보니 문자를 넣을 수 있는 구간은 1번 add 기능과 3번 winner기능인 것으로 확인되었다.

IDA에서 add 함수부터 확인 시작

버퍼의 크기는 40 

read 크기는 0x860 (2144 size) 를 받는다

-> stack over flow 상황

 

1번 기능에 아무문자나 40개보다 많이  stack over flow 가 발생하는지 확인 -> 에러 발생

 

두번째 문자를 넣을 수 있는 곳 winner 기능 확인

버퍼의 크기는 24

read 크기는 0x98 를 받는다

-> stack over flow 상황

 

3번 기능에 아무문자나 24개보다 많이 넣어서 stack over flow 가 발생하는지 확인 -> 1번 기능과 동일하게 에러 발생

 

stack over flow 는 이런 상황에서 발생

 

 


 

Canary ( = 같은 기능을 수행 NX,malloc)

 

 

  • 스택 오버플로우 보호 완화 기법(mitigation)
  • 함수 호출 시 카나리 값을 스택 프레임의 최상단에 저장, 함수 종료 시 스택 오버플로우를 검사

 

Master Canary

  • 로컬 카나리는 함수 종료 시 검사를 위해 마스터 카나리와 비교 -> 값이 다르면 스택오버플로우가 발생했다고 판단하고 프로그램을 비정상 종료시킴 (stack smashing detected error 발생)
  • 일반적으로 마스터 카나리는 전역 공간에 저장되나 쓰레드에서는 마스터 카나리가 스택 영역에 저장

 

그렇다면 카나리를 우회하는 법이 있을까?

만약 카나리의 값과 마스터카나리값을 동일한 문자로 덮어버린다면 우회할 수 있다.

 

 

 

buffer size 0x28 보다 큰 임의의 값을 넣어준다 -> 0x100

 

 

앞에 p. 는 Pwntools로 분석을 쉽게 하기 위한 매크로를 만들고 있다고 생각하면 됌

sendlineafter설명

 

코드를 작성한 이후 테스트를 하고 싶으면 vscode와 연결되어 있는 터미널에

python3 {file name}  이런식으로 스크립트를 실행해주면 자동으로 넘어가서 테스트를 쉽게 할 수 있다.

버퍼오버플로우가 발생하고 카나리가 프로그램을 자동으로 종료시켜주는 것을 확인 할 수 있다.

 

로컬 카나리까지만 덮으면 전역카나리와 비교 후 값이 달라서 에러가 나는 것 확인

 

GDB를 통한 디버깅

  • tmux
  • python3 {file name} GDB

*GDB: 리눅스(C, C++. 바이너리) 디버거

 

break point 를 걸고 버퍼를 확인하는 작업을 GDB 에서 할 수 있다.

 

GDB에서 확인해야할 사항: 로컬 카나리 (stack frame 에 있는 것) ,마스터 카나리 (실제 원본 카나리)

 

x/gx $rbp-8 명령어를 통해서 로컬 카나리 확인이 가능하다.

 

stack frame point 에 rbp 가 위치하는데 그곳에서 8만큼 떨어진 위치에 로컬 카나리가 위치한다. 

그렇기 떄문에 rbp-8 을 하는 것

 

로컬카나리 - rsi 를 해서 rsi의 랭스가 0x28인것을 확인

다시말해 rsi 는 buffer에 위치해서 0x28만큼 떨어져있다.

 

 

마스터카나리는 fs_base에 저장이 되어있다.아래와같이 얼만큼 떨어져있는지 확인가능

Buffer ~ Master Canary 오프셋 확인

 

 

 

 

 

 

 

 

로컬카나리와 전역카나리 모두를 같은 문자로 덮어서 우회 시도

마스터카나리까지 덮으려면 얼마나 문자를 적어야할지 계산을 해야함

Buffer ~ Master Canary 오프셋 848이니까 그것보다 큰 850을 넣어서 테스트 

테스트 continue 하면

첫번째 break point에서 죽음 

 

왜냐면, 그 사이에 덮어서는 안되는 어떠한 주소를 임의의 문자로 같이 덮어버림 -> 그래서 비교하는 로직까지도 도착하지 못하고 그냥 죽어버림

그래서 위치까지 파악하면서 계산을 하고 발생한 크러쉬를 우회해서 접근해야함

memo()

Another bof function

리턴 주소를 조작하여 반복해서 buffer overflow를 유발할 수 있음

 

Shellcode는 일반적으로 버퍼 오버플로우와 같은 취약점을 이용하여 원격 코드 실행을 목표로 하는 작은 코드 조각을 의미합니다. 이 코드는 주로 쉘을 실행하기 위해 설계되며, 공격자가 시스템에서 명령을 실행할 수 있도록 해줍니다.

 

최근에는 카나리와 비슷한 동작을 하는 NX가 Shellcode 공격을 다 막는다.

그렇기 때문에 나온 기법이 ROP 이다.

 

 

ROP (Return Oriented Programming)

  • ROP는 주로 실행 방지 메커니즘(NX 비트 등)을 우회하기 위해 사용됩니다. 이 기술은 악의적인 코드를 직접 삽입하는 대신, 기존의 실행 가능한 코드 조각(“gadget”)을 사용하여 원하는 동작을 수행합니다.
  • 스택 주소는 실행 할 수가 없는데 코드영역은 CPU가 실행시켜야 할 코드가 들어가있으니 리턴할떄 쉘코드를 스택에 쓰고 스택으로가는게 아니라 코드영역으로 가면 어떨까 하는것
  • Idea: 바이너리에 존재하는 코드를 재활용
  • “Gadget”: pop rdi ; pop rsi ; ret
  • 스택을 공격자가 조작한 입력으로 overwrite
  • “gadget”을 연결해 프로그램 실행 흐름 조작

 

 

STAGE2

 

기존에 데이터 영역에 있던 got 이라는 섹션에서 특정 라이브러리 함수에 있는 주소를 하나 유추하고 싶음

ASLR 이 작동되고있기 때문에 정확한 위치 파악을 위해 임의의 주소를 하나 빼오는 것 스크립트에서는 read 오프셋을 빼오려고 시도 이러한 방식을 leak 이라고 한다.

 

***ASLR (Address Space Layout Randomization)**는 시스템의 메모리 주소 공간의 배치를 무작위로 변경하여 보안을 강화하는 기법입니다. 주로 버퍼 오버플로우와 같은 공격을 방어하기 위해 사용됩니다

 

다시말해, 정상적 메모리 값 하나 빼와서 거기서 실제 주소를 계산해서 라이브러리 베이스의 주소를 찾는다.

-> 어느 위치에 메모리가 어디에 올라가 있는지를 파악할 수 있다.

 

STAGE3

ROP call 을 진행

bin/shell 과 특정프로세스를 만들어주는 execve 을 call 해서 빈쉘을 열어준다

스텍 포인터를 맞춰주고 rop를 돌려보면 결론적으로 실행되는 내용은 쉘이 떨어진다.

 

*** execve는 Unix 및 Unix 계열 운영 체제에서 사용되는 시스템 호출로, 새로운 프로세스를 실행하는 데 사용됩니다. 이 시스템 호출은 주어진 프로그램을 현재 프로세스의 메모리 공간에서 실행하기 위해 사용되며, 기존 프로세스의 내용을 대체합니다.


NOTE

Use After Free

댕글링 포인터 (Dangling pointer) 

  • 해제된 영역의 포인터를 가리키고 있는 포인터

 

note.c 파일분석

 

 

excercise 4.1

 

아래와 같이 4가지 기능을 구현할 수 있다.

 

설명예시

    def write(self, idx: int, script: bytes, emoj: int):
        self._menu(1)
        self.conn.sendlineafter(b"index(1 ~ 16): ", str(idx).encode())  // index(1~16) 입력받는 출력이 나오면 입력값 idx 를 받는다
        self.conn.sendlineafter(b"script: ", script)  // script 입력받는 출력이 나오면 시크립트를 작성한다.
        self.conn.sendlineafter(b">>> ", str(emoj).encode())  // >>> 입력받는 출력이 나오면 앞에 이모지를 선택한다.

 

DEBUG 옵션을 추가하여 분석을 하면 무엇을 주고 받는지 확인할 수 있다.

 

 

취약점이 어디서 발생하는지 파악단계

  • 1번에 happy를 write 1번을 read했는데 happy가 잘 나옴
  • erase 로 1번 happy를 지웠다. (1번은 free가 되서 다시 할당할 수 있도록 운영체제에 돌아가야함)
  • 2번에 sad를 write read 하서 1번을 read했는데 sad가 나옴 (1번은 다 지워져있어야 정상아닌가?) 

댕글링포인터와 관련이 있다.

 

이미 해제된 포인터인데 그 값을 계속해서 가지고 있기 때문에 1번으로 다시 읽어도 읽을 수 있는데 심지어 1번에 새드가 저장되어있고 2번해도 새드가 잘 나온다.

 

이것이 USE AFTER FREE 취약점 

 

 

 

 

  • tmux
  • python3 example_04_b.py GDB
  • script 의 break point 를 만들어놈
  • c 할때마다 write, read, 순으로 걸림
  • write A 를 8개, Happy 
  • vis (vis는 Vi 모드에서 작동하는 텍스트 편집기로 힙의 구조를 확인, 분석한다)

"vis" command in gdb at each breakpoint to visualize the heap layout.

 

 

코드 분석

위의 USE AFTER FREE 취약점  스택구조 참고


Shellcoding Test

 

  • $ wget {binary address}
  • # 바이너리에 실행 권한 부여
  • $ chmod +x shellcoding_test
  • $ ./shellcoding_test

Seccomp

  • 리눅스 커널 샌드박스 보안 기능
  • 프로그램을 보호된 영역에서 동작해 시스템이 조작되는 것을 방지
  • 프로세스가 사용할 수 있는 시스템 콜을 제한

seccomp tools로 seccomp 정책 확인 가능

  • $ sudo apt install gcc ruby-dev gem
  • $ sudo gem install seccomp-tools
  • $ seccomp-tools dump ./shellcoding_test

 

0x40000000 이하는 모두 kill 한다.

 

x86_64 Assembly

 

Timing based side channel

 

 

 

정답

아래와 같은 shellcode를 통해서 한 문자열씩 비교해가면서 flag 를 추출할 수 있다.

 

 


시험

PPT 강조표시되어있는 내용

stack over flow

  • Canary

스택 오버플로우 보호 완화기법

  • ROP 는 어떨때 사용가능?

nx가 걸려잇어서 쉘코드를 실행하지 못하게 . 그래서 사용하는 기법

Note

heap → danglin pointer 를 통해서 발생하는 취약점

  • Use After Free
  • Seccomp

프로세스가 사용할 수 있는 시스템 콜을 제한하는 샌드박스 보안 기능

(메모리보호기능은 아니고 샌드박스 보안기능임)

  • Timing-based Side channel

실행시간을 비교한다

정상적일떄는

같은값이면 계속 본다.

정상작동하는지 시간을 비교한다.

 

 

300x250
320x100

멀웨어 분석 실습

 

base64

  • base64는 이진 데이터를 ASCII 문자로 인코딩하는 방법

 

인코딩 vs 암호화 차이점

  • (인코딩은 쉽게 여러 웹사이트에 있는 디코딩을 통해서 복원이 가능하지만, 암호화는 복원을 위한 암호화 키가 필요)
  • 인코딩은 데이터의 형식을 변경하여 저장하거나 전송하기 쉽게 만드는 것이며, 쉽게 복원할 수 있습니다. 보안 목적이 아닙니다.
  • 암호화는 데이터를 보호하기 위한 방법으로, 권한이 없는 사용자가 읽지 못하도록 변환하며, 복원하려면 암호화 키가 필요합니다. 보안 목적이 있습니다.

eml_analysis 분석 실습

 

파일을 열면 아래와 같이 알수없는 글씨가 나오는 것을 확인할 수 있습니다.

 

 

CyberChef는 데이터 변환 및 조작을 위한 웹 기반 도구로, 다양한 인코딩, 디코딩, 암호화, 해시 생성, 포맷 변환 등의 기능을 제공

https://gchq.github.io/CyberChef/  

 

위의 사이트를 이용해서 암호화되어 있는 텍스트를 붙여넣기 + From Base64 클릭

아래와 같이 복원된 텍스트를 확인 할 수 있다.

 

Output을 보기 쉽게 텍스트 파일에 옮기고 확인한 결과 

첨부파일이 존재한다는 것을 식별하였다.

 

 

onlineform.html 파일이 첨부가 되어 있는 것을 아래와 같이 식별

 

이메일의 아랫 부분 암호화된 파일도 똑같은 과정을 통해 복호화(디코딩) 진행

 

아래와 같이 스크립트가 출력이 되는 것을 확인

 

숫자 중간 중간 %는 스페이스의 역할을 하는 것으로 추정된다.

메모장에 옮긴 파일의 %를 스페이스로 모두 대체한다.

 

그 이후, Hxd 를 통해 분석 시작

*HxD는 이진 파일 편집기이자 헥스 에디터로, 파일의 내용을 헥사(16진수) 형식으로 보고 편집할 수 있는 소프트웨어입니다. 주로 데이터 복구, 바이너리 파일 분석, 포렌식, 프로그래밍 및 디버깅 등의 작업에 사용됩니다.

 

 

이와같은 방식으로 이메일속 멀웨어를 분석할 수있음.

 

 

참고자료

  • CVE or 한글 CVE (이글루나 안랩에 올라와 있는 공통 취약점을 파악 할 수있음)
  • PostScript는 주로 프린터와 그래픽 디스플레이 용도로 사용되는 페이지 설명 언어입니다. 이 기술은 그래픽과 텍스트의 출력 형식을 정의하는 데 사용되지만, 악성코드가 PostScript를 통해 구현될 수 있는 가능성도 있습니다.
  • 한글 파일 내에서 임의의 코드를 실행할 수 있는 스크립트는 일반적으로 매크로 또는 스크립트 언어를 사용하여 작성됩니다. 예를 들어, 한글 프로그램에서는 HWP 파일 내에 매크로를 삽입하여 특정 작업을 자동화하거나 사용자 정의 기능을 추가할 수 있습니다.
  • OLE 파일은 다양한 데이터를 하나의 파일 내에 효과적으로 포함하고 연결할 수 있는 유용한 방식입니다. 이 기술을 활용하면 문서의 가독성과 기능성을 높일 수 있습니다.

 


hwp_analysis 분석 실습

 

주어진 파일의 압축을 푼다.

'코로나바이러스 대응 긴급 조회' 파일을 연결프로그램으로 반디집을 클릭해서 열게 되면 아래와 같은 창을 볼 수 있다.

 

*반디집은 다양한 파일 압축 및 해제 기능을 지원하는 프로그램으로, 여러 가지 파일 형식을 처리할 수 있습니다

 

의심스러운 파일을 찾아서 매모장으로 열음

 

HxD에 붙여넣기

 

오른쪽 디코드 된 부분을 메모장으로 가져와서 분석한다.

 

이와같은 방법을 통해 hwp 파일을 분석할 수 있다.

 

발전한 해킹기법

  • 요즘 해커들은 사용자의 의심에서 벗어나기 위하여 일정기간동안 바이러스 파일이 실행되지 않게 실행을 잠깐 멈춰놓고 사용자가 의심하지 않을때쯤 프로세스를 실행시켜 공격한다. 
  • 해커는 사용자의 설정 영역 일부를 읽어 현재 가상환경인지 local환경에서 프로그램이 실행되는지 확인을 하고 실행여부를 조정할 수 있다.

분석실습 (실행환경 Ubuntu 22.4 )

 

GDB

GDB는 GNU Debugger의 약자로, 프로그램의 디버깅을 위해 사용되는 강력한 도구입니다. 주로 C, C++, Fortran 등의 언어로 작성된 프로그램을 디버깅하는 데 사용됩니다.

 

초기환경 세팅

 

  • sudo apt update  // 이 명령어는 패키지 목록을 업데이트합니다. 즉, 시스템이 사용하고 있는 소프트웨어 저장소에서 최신 패키지 정보를 가져옵니다.
  • sudo apt install gdb  // GDB를 시스템에 설치합니다. apt는 패키지 관리 도구로, install 옵션은 지정한 패키지를 설치하는 기능을 수행합니다.
  • 주어진 파일 다운
  • sudo apt install unzip  // unzip 명령어는 Linux 시스템에서 unzip 패키지를 설치하기 위한 명령어입니다. 각 부분에 대한 설명은 다음과 같습니다.
  • unzip Handson_dist.zip
  • shell chmod 755 ./handson5 // handson5 파일의 권한을 소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹 및 다른 사용자에게는 읽기 및 실행 권한을 부여합니다.
  • gdb -q handson5  // GDB를 조용한 모드로 실행하여 handson5 프로그램을 디버깅합니다.
  • set disassembly-flavor intel  // GDB에서 어셈블리 코드를 Intel 구문으로 출력하도록 설정합니다.
  • info func  // 현재 디버깅 중인 프로그램 내의 함수 목록을 표시합니다.(우리가 분석해야할 대상확인)

 

  • disassemble main

 

  • run

 

  • x/4gx $rdi // 핵스로 나타내라

 

x/s $rdi // 문자로 나타내라 (내가 사전에 입력한 숫자가 나오는 것을 확인할 수 있다.)

 

n or s 동작이 동일하다.

이 다음의 코드가 실행이 된다.

n : next step 다음에 있는 줄을 실행해라 라는 의미 ( 어느 주소로 뛰든 예를 들어 call 안에 함수들을 한줄로 보고 한줄로 실행을 시키고 다음으로 넘어감)

s : step into ( 예를 들어 call 이 함수의 주소 1080 주소 안으로 한바퀴가 들어가게 된다.)

 

 

Breakpoint 설정하는법 (예시) - 1, 2, 3 이런식으로 순서대로 설정이 된다.

b *main+118

Breakpoint 를 지우는 법

delete 1 or 2 or 3

내가 설정한 포인트를 하나씩 지울 수 있음

info breakpoints 를 통해서 내가 가지고 있는 브레이크포인트를 확인할 수 있음.

 

기드라에서 코드 분석한 내용을 바탕으로

r 1000 982 를 각 인자에 임의로 집어넣어서 Done 표시를 나타낸다 (전날 자료 참고)

 

 

결론, breakpoint를 활용하여 코드를 쪼개보며 분석을 한다.

 


IDA Freeware

  • 바이너리를 역으로 분석해주는 툴 / 프리웨어 버젼으로 다운

SSH

  • 윈도우 상에서 shell 을 연결할 수 있게 해서 가상환경에서 명령어를 동작할 수 있게 한 명령어

$ ssh-keygen

  • Enter 키를 세 번 눌러 기본 설정을 사용합니다. 이렇게 하면 ssh 키 쌍이 생성됩니다

curl

  • 데이터 전송을 위한 명령줄 도구로, 다양한 프로토콜(HTTP, HTTPS, FTP, FTPS, SCP, SFTP 등)을 사용하여 데이터를 전송할 수 있습니다.

 

  • curl {address} > install.sh
  • sudo sh install.sh

가상환경 코드를 Window 화면에서 동작시키기

Window PowerShell 에서 ssh-keygen 입력

 

scp .ssh/id_rsa.pub ubuntu@192.168.1.71:~/.ssh/authorized_keys

 

1. VScode -> extension -> Remote - SSH 설치

2. Ctrl + Shirt + P  누른 후 ssh config 

 

IdentiyFile 라인 추가해서 로컬 경로 설정

HostName :  내가 remote 할 가상환경(Ubuntu) IP 주소

Hose, User 이름 설정 

 

Ctrl + Shirt + P  누른 후 remote ssh connect

-> ubuntu 클릭

 

새로운 VSCode가 열린다면 성공

-> Linux 클릭 -> 터미널 열기

 


System Security - Strange Upgrade 문제

 

문제에 적혀져 있는 주소 그대로 복사하여 vscode terminal 에 붙여넣기 

 

아래와 같은 문제가 나옴

IDA tool을 이용해서 파일을 분석해야함

 

IDA 기본 단축키

  • F5/Tab : Decompile/Change View : 바이너리보다 더 편하게 볼 수 있다.
  • N: Rename : 함수 또는 변수의 이름을 바꾼다.
  • Double Clike: Enter : 해당 함수에 들어갈 수 있다.
  • ESC : 뒤로가기
  • TAB : 코드와 테이블 전환 가능(코드 보는 방식을 바꿀 수 있음) 

 

 

IDA 실행 -> open -> 파일열기 -> OK -> 테이블 형식으로 보여지는데 TAB 버튼을 통해 코드로 확인 

 

 

코드분석을 위해 main함수 더블클릭 

 

단축기 N (rename) 을 이용해 하나씩 변수가 어떤 역할을 하는지 확인하고 이름을 보기 좋게 바꾼다.

첫번째 함수

 

두번째 함수

 

세번째 함수

 

네번째 함수

 

최종 rename된 코드

Command injection

리눅스에서는 명령어를 연결해서 사용할 수 있는데 그러기 위한 특수문자들이 존재한다.

;(세미콜론) 여러 명령어를 순차적으로 실행

&&(AND) 첫 번째 명령어가 성공적으로 실행될 경우(종료 상태가 0인 경우)에만 두번째 명령어를 실행

|| (OR) …. 등등

기본 명령어에 특수문자를 맨앞에 집어넣으면 다른 명령어를 연결해서 인젝션 공격을 할 수 있다. 이것을 커멘드 인젝션 공격이라고 함

ex)

; cat

 

 

아래와 같이 커멘드 인젝션 공격을 통해서 빈 공간에 ls 를 치고 flag 를 cat flag 를 통해 가져올 수 있게 한다.

 

 

* vi 를 사용해서도 같은 결과를 도출해 낼 수 있다.

 


 

System Security - SigMe 문제

 

문제 확인

신호 핸들러(signal handler)는 운영 체제에서 특정 신호를 수신했을 때 실행되는 사용자 정의 함수입니다. 신호는 프로세스 간의 비동기적 통신 방법으로, 특정 이벤트가 발생했을 때 프로세스에 알림을 보내는 역할을 합니다. 예를 들어, 사용자가 프로그램을 종료하려고 할 때 발생하는 SIGINT 신호가 있습니다.

 

IDA를 통해 파일을 열고 main 함수 확인

 

Signal

  • 프로세스 외부에서 발생한 이벤트를 프로세스에게 알려주는 인터럽트
  • 프로세스 외부에서 발생한 이벤트를 알려주는 것 (ex 컴퓨터가 꺼졌으면 컴퓨터 동작이 안되기 떄문에 시그널을 통해 알려줘야함)
  • 시그널 처리: 시그널을 무시하거나 종료하거나 획득
  • Signal Handler: 시그널 처리를 위한 함수 지정

Signal 함수의 3가지 동작

  • 시그널을 무시
  • 시그널에 기본 동작
  • 시그널 수신 시 handler 호출

아래와 같은 방법으로 Strings 으로 분석할 수도 있음

 

아래의 창에서 의심스러워보이는 String을 찾음 (flag)

 

x 버튼을 통해서 의심스러운 라인이 어디에 있는 건지 filename을 확인할 수 있다.

OK 버튼 클릭

 

TAB 버튼을 누르면 아래와 같은 코드로 확인가능

 

추적결과 flag 는 1번 SET Signal 안에 있는 것으로 확인

flag 를 호출하려면 알람기능을 사용해야한다.

 

아래의 Signal 을 사용하면 Flag를 얻을 수 있다.

"SIGALRM | 14 | 종료 | 알림에 의해 발생"

명령어 "14" 를 삽입하면 30초 후에 알람이 나오면서 FLAG가 나온다.

 

 

 

두번째방법

 

VScode를 통해서 파이썬 파일을 열고 아래와 같이 주소값을 맞춰준다.

 

BINARY : file name

HOST 와 PORT: 파일의 주소값 (nc 3.34.49.33 1002)

 

 

 

위와 같이 주소와 포트값을 맞추고 python3 example_02.py 입력하여 실행

 

아래와 같이 main 함수 수정하여 결과값을 도출해낼 수 있다.

 


Pwntools

  • 익스플로잇 작성 라이브러리
  • CTF 익스플로잇을 최대한 쉽게 작성
  • 로컬 익스플로잇을 원격 익스플로잇으로 전환하기 용이

 

300x250

+ Recent posts