# pwn

[Pwn] Basic knowledge
앞으로 Pwnable 공격 기법에 필요한 개념과 공격 기법을 차근차근 정리해보려고 한다...❗ Stack Buffer overflow를 살펴보기 전, 알아야할 Memory Layout과 함수 호출 규약(Calling Convention)에 대해 먼저 정리해보려고 한다

Stack Buffer Overflow...
학습 목표cdecl, SYSV 호출 규약이 무엇인지, 그리고 다음 코스에서 배우는 스택 버퍼 오버플로우가 왜 위험한지 이해할 수 있다.서론 : 함수 호출 규약함수의 호출 및 반환에 대한 약속함수를 호출할 때는 반환된 이후를 위해 호출자(Caller)의 상태(Stack
NX & ASLR...
ASLR (Address Space Layout Randomization)바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법커널에서 지원하는 보호기법이며, cat /proc/sys/kernel/randomize_va_space로
링크와 PLT, GOT
Keyword : Lib, Link, PLT, GOTLibrary : 프로그램이 함수나 변수를 공유해서 사용할 수 있게 하는 파일C 표준 라이브러리 - libc -> 우분투 기본적, /lib/x86-64-linux-gnu/libc-2.27.soLink : 프로그램에서
페이로드 구성을 위한 파이썬 문자열 다루기
참고 : w3schools.com문자열은 리스트와 특징을 공유한다문자열 자체를 임의로 변경할 수 없다2번째 인덱스부터 5번째 인덱스까지 자르기 : b = a\[2:5] (끝은 생략가능)인덱스 끝을 0으로 두고 거꾸로 : b = a\[-5:-2]특정 문자열의 첫번째 문자

[Pwn] Unsafe unlink
오늘은 Unsafe Unlink에 대해 이해해보려고 한다...! > Unsafe unlink 취약점은 Fake Chunk를 활용하여 다른 인접한 Chunk와 병합이 일어날 때 발생하는 취약점으로, 이를 통해 원하는 주소에 값을 쓰거나, 출력할 수 있다. Unsaf
[ Dreamhack ] fho
모든 보호기법이 적용되어 있다. 특히 Full RELRO가 적용된 것을 볼 수 있다.stack에 값을 입력받는다.원하는 주소에 원하는 값을 입력할 수 있다.원하는 주소를 free할 수 있다.Full RELRO 때문에 GOT를 덮어 쓸 수 없다.하지만 free함수가 실행
[ Dreamhack ] basic_rop_x86
보호기법은 NX가 적용되어 있다.buf를 0x40byte 할당하고 0x400byte를 read받고 있다. 그래서 BOF취약점이 발생한다.주어진 libc에서 문자열 "bin/sh"을 찾을 수 있다.ROP 가젯 역시 문제에서 찾을 수 있다.이를 이용하여 ROP를 수행하면
[ Dreamhack ] basic_rop_x64
문제 파일에는 NX가 설정되어 있다.0x40byte의 버퍼를 할당하고 0x400byte 만큼 버퍼에 입력받고 있다. 따라서 BOF 취약점이 존재한다.1\. GDB로 분석해보면 rbp-0x40에 버퍼가 위치하고 있다.2\. 주어진 libc를 보면 안에 "/bin/sh"라
[Pwn] House of botcake
House of botcake 오늘은 House of botcake에 대해 알아볼 예정이다.. > House of botcake는 tcache에서 double free bug를 막기 위해 추가된 e->key를 건드리지 않고도, DFB를 유발시킬 수 있는 취약점이다.
[ Dreamhack ] ssp_001
32bit 바이너리이며, NX하고 Canary가 걸려있다.코드를 보면 다음과 같다메뉴 F는 box에 값을 넣을 수 있다.메뉴 P는 인덱스에 해당하는 box값을 볼 수 있다.\-> 인덱스를 입력받을 때 경계값 검사가 없어 box 밖의 값을 볼 수 있다.메뉴 E는 이름을
[ Dreamhack ] basic_exploitation_001
문제의 환경정보를 보니 어떠한 보호기법도 적용되어 있지 않다.문제 소스코드를 보면 gets로 값을 입력받고 있으나 길이를 검사하고 있지 않아 BOF취약점이 존재한다.또한 flag값을 주는 read_flag()함수도 존재한다.gdb로 분석해보면 gets로 입력받은 값은
[ HackCTF ] Simple_Overflow_ver_2
문제를 실행해보면 Data를 입력하면 버퍼의 주소를 알 수 있다.다시 Data를 입력하면 같은 위치에 새로운 Data가 들어간다.코드를 보면 scanf로 값을 입력받는 부분에서 길이에 대한 검사가 없어 BOF 취약점이 존재한다.처음에 아무 값이나 입력해서 버퍼의 주소를
[ HackCTF ] x64 Simple_size_BOF
gets에서 BOF 취약점을 찾을 수 있다.또한 puts를 통해 buffer의 주소를 알려주고 있다.buffer에 쉘코드를 넣고 gets에서 BOF를 통해 return address를 buffer로 덮어주면 된다.payload는 다음과 같이 작성하면 된다.shellco
[ HackCTF ] x64 Buffer Overflow
main함수에서 scanf를 보면 BOF 취약점이 존재한다.callMeMaybe함수에서는 shell을 획득할 수 있다.변수 s는 ebp-0x110에 위치하므로 다음과 같이 payload를 작성할 수 있다.dummy(0x110byte) + sfp(8byte) + 0x00