분류 전체보기
-
Oneshot gadgetCTF/TOOL 2021. 1. 8. 20:24
PRELIMINARY 서론 oneshot gadget(magic gadget)이란 해당 gadget 하나만을 이용하여 shell을 획득할 수 있는 gadget이다. [1] 대표적으로는 execve("/bin/sh") 등이 이에 해당하는데, 신기하게도 rdi에 "/bin/sh"의 offset 주소를 전달하고 execve 함수를 실행하는 코드가 libc 내부에 존재한다. 위와 같이 "/bin/sh"의 주소를 레지스터에 전달하는 부분을 검색해보자. 만약 e6e73 부분의 코드를 실행한다면 함수의 처음 세 인자를 저장하는 rdi, rsi, rdx에 순서대로 값이 전달된 후 execve 함수가 실행될 것이다. 추가로, 위 코드를 통해 쉘을 취득하려면 r10과 r12가 NULL이어야 한다. 그렇다면 이러한 코드의 ..
-
RET OverwriteCTF/PWNABLE 2021. 1. 8. 20:23
CONSTRAINT 제약 조건 Exploit gadget address(shellcode, oneshot_gadget, etc.) Stack buffer overflow(지역 변수에서의 overflow를 이용해 ret를 gadget의 주소로 조작) Function Epilogue(함수가 exit(0)등을 통해 종료될 경우 ret을 호출하지 않으므로) PRELIMIARY 서론 해당 포스팅은 어셈블리어와 스택 프레임파트의 내용을 기반으로 한다. x86 Architecture의 stack frame은 다음과 같다. 메모리의 스택(stack) 영역은 함수 호출에 의해 할당되고, 지역 변수와 매개변수가 저장되는 영역이다. Caller 영역은 호출된 함수의 매개변수, 호출이 끝난 후 돌아갈 return addres..
-
pwngdbCTF/TOOL 2021. 1. 8. 05:23
PRELIMINARY 서론 pwngdb는 pwn을 위한 GDB(GNU Debugger)이다. 명령어의 실행마다 레지스터, 스택, 실행 중인 코드의 정보 등을 색깔과 함께 보여주며 exploit에 유용한 기능을 다수 포함하고 있다. 다음 명령어를 터미널에 입력해 pwngdb를 설치하자. $ cd ~ $ git clone https://github.com/longld/peda.git ~/peda $ git clone https://github.com/scwuaptx/Pwngdb.git $ cp ~/Pwngdb/.gdbinit ~/ gdb를 사용하기 위해서는 터미널에 gdb를 입력해주면 된다. 다음은 pwngdb의 주요 기능과 사용법에 대해 알아보자. Control 제어 gdb [바이너리]를 통해 원하는 바이..
-
pwntoolsCTF/TOOL 2021. 1. 8. 04:01
PRELIMINARY 서론 pwntools는 CTF를 위해 최적화된 기능들을 제공하는 python 라이브러리이다. 주어진 바이너리에 대해 분석하고, 호스트와 상호작용하는 등 다양한 작업을 수행할 수 있다. 다음 명령어를 터미널에 입력해 pwntools를 설치하자. $ sudo apt-get update $ sudo 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 pwntools를 python 코드에서 사용하기 위해서는 pwn을 import 해주면 ..
-
WSL2CTF/TOOL 2021. 1. 8. 02:47
Windows 10에 WSL(Linux용 Windows 하위 시스템)을 설치하는 방법에 대해 알아보자. 포스팅을 작성하면서 참고한 글은 다음과 같다. [1][2] 1. Windows Terminal Microsoft Store에서 Windows Terminal을 설치한 후 관리자 권한으로 실행한다. 2. 기능 활성화 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 위 명령어를 Windows Terminal에서 실행한 후 컴퓨터를 재시..
-
2020 ICPC Seoul Regional 후기PS/CONTESTS 2020. 11. 16. 01:25
대회 당일날은 주변 사람들과 함께 원없이 놀고, 다음날 일어나서 하루종일 PL 프로젝트를 하다보니 대회가 끝난지 하루가 훌쩍 넘어서야 후기 생각이 난 것 같다. 포스팅을 하러 티스토리에 로그인하려는데, 몇달간 블로그에 들어간 적도 없어서 그런지 휴면계정으로 전환되어 귀찮은 절차를 거쳐야 했다. 이번에는 좀 열심히 포스팅해보자는 다짐을 했지만... 작심했다고 오래 갈지는 장담 못하겠다. 또한 로그인하고 처음 들어가본 페이지가 통계였는데, 순간 눈이 잘못됐나 싶었다. 나의 게으름으로 후기 보러 온 사람들을 헛걸음하게 만든 것 같아 묘한 느낌으로 작성하는 중이다. 팀 소개 팀원 중 한명인 김홍녕(dillon0108)은 18' 여름학교 때 보여준 퍼포먼스가 매우 인상적이라 호시탐탐 노리다가 대학이 결정된 순간 ..