Wargame - basic_exploitation_000
basic_exploitation_000 문제 상황 분석 문제 상황을 분석해보자. ... int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return ...
basic_exploitation_000 문제 상황 분석 문제 상황을 분석해보자. ... int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return ...
함수 호출 규약? 함수 호출 규약은 함수의 호출 및 반환에 관한 규약이다. 함수를 호출할 때 호출자의 Stack Frame, Return Address를 저장해야하고, 피호출자가 요구하는 인자를 전달해야한다. 또한 함수가 반환될 때, 피호출자의 반환값을 호출자가 전달 받아야한다. Calling Convention을 적용하는 것은 컴파일러가 한다. ...
pwntools 기본 함수들의 용도에 대한 매우 기본적인 내용 정리 필요하다면, docs 원문을 참조하자. pwntools api docs installation of pwntools #Based on Debian apt-get update apt-get install python3 python3-pip python3-dev git libssl...
orw (open-read-write) orw 셸코드는 파일을 열고, 읽고, 출력하는 셸코드다. 동작을 C코드로 표현해보면, 아래와 같은 느낌이다. char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); write(1, buf, 0x30); orw shell...
pwndbg 명령어 entry: 진입점에 중단점을 설정한 후 실행 break(b): 중단점 설정 continue(c): 계속 실행 disassemble: 디스어셈블 결과 출력 u, nearpc, pd: 디스어셈블 결과 가독성 좋게 출력 x: 메모리...
execve execve shellcode는 임의의 프로그램을 실행시키는 셸코드다. /bin/sh 프로그램을 실행시키는 execve shellcode를 작성해보자. execve shellcode는 execve syscall만으로 구성된다. execve syscall arguments rax : 0x3b rdi : const char *filen...
System Hacking을 공부하기 앞서서 Register에 대해 공부하는 내용 x86-64 Architecture : Register 레지스터는 CPU가 데이터를 빠르게 읽고 쓸 때 이용하는 저장소다. 산술 연산에 필요한 데이터를 저장하거나 주소를 저장 및 참조하는 등 다양한 용도로 사용된다. x86-64 아키텍처에는 범용 레지스터(Gener...
Based on x86-64 Basic structure : opcode operand1 operand2 … ex) mov eax 3 kind of operand : Immediate value, Register, Memory(Size Directive TYPE PTR can added before it) Data Transfer mov dst...
Stack ? 스택에는 아래와 같은것들이 저장된다. Argument « High Memory Return Address « Stack Frame 상단 Base Pointer(SFP) Local Varaible « Low Memory Stack에는 영역이 존재한다. 이 영역을 구분하기 위해 존재하는것이 Stack Frame이다. ...
Memory에 대해 공부한다. [DreamHack]내용을 따른다. What is Memory layout? 매우 오래전에는 모든 데이터들(Function, data, lib)을 하나의 페이지 내에 저장해서 사용하는 방식을 사용했으나, 이는 매우 취약한 형태이므로 오늘날은 발전된 Memory Layout을 사용한다 예를들어, malicious...