1. 소개 Pwn 분야를 처음 접하게 되면 가장 많이 어렵다고 느끼는 부분인 Pwnable의 꽃 ROP에 대해서 알아보자 선행 학습 요소 Calling Convention Buffer Overflow Stack Memory Cumputer Architecture ROP란? Return Oriented Programming(이하 ROP)은 가젯이라고 불리는 코드 조각들을 사용하여 공격자가 임의의 코드를 실행하고 프로그램의 흐름을 바꾸는 기초 기법이다. 말그대로 공격자가 원하는 대로 실행 흐름을 바꿀 수 있기 때문에 공격이 가능할 경우 엄청난 피해를 일으킬 수 있다. How to use? 필요한 프로그램들로는 gdb(pwndbg, peda, gef), pwntools, python 등의 프로그램이 사용된다...
Pwnable
Asm 명령어 중에 Syscall 이라는 명령어가 있다. Syscall 명령어는 x86-64 아키텍처 기준으로, rax, rdi, rsi, rdx 총 4가지 레지스터의 정보를 통해 여러 함수를 실행한다. (몇몇의 syscall 명령어는 더 많은 레지스터를 사용하기도 한다.) 우선적으로, rax 레지스터의 값으로 어떤 함수를 실행할지 결정하게 되는데, 각 값에 따른 함수의 종류는 아래 링크에 정리되어 있다. https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md Chromium OS Docs - Linux System Call TableLinux System Call Table These are the system c..