System-hacking

    [ASC 스터디] 9주차 - Return to Library(RTL)

    [ASC 스터디] 9주차 - Return to Library(RTL)

    👉 지난 차시 2022.08.19 - [System-hacking/📖] - [ASC 스터디] 8주차 - Stack Canary + Out Of Boundary 1. Return To Libc ( RTL ) 살짝 어려울 수 있다 ! 1.1. 함수호출 규약( Calling Convention ) : 함수를 호출하는 방식에 대한 약속 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종류를 구분한다. 함수호출규약 참고 > 함수호출규약 1. 함수 호출 규약 개요 함수 호출 규약(Calling Convention)이란, 함수를 호출하는 방식에 대한 약속이다. 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종..

    [ASC 스터디] 8주차 - Stack Canary + Out Of Boundary

    [ASC 스터디] 8주차 - Stack Canary + Out Of Boundary

    👉 지난 차시 2022.07.30 - [System-hacking/📖] - [ASC 스터디] 7주차 - Stack Buffer Overflow 문제 풀이, Integer Overflow ( 2주치 밀려서 부랴부랴 쓰는중... ) 1. Stack Canary 스택 버퍼 오버플로우를 막기 위한 기법이다. ( SFP와 RET 값이 변조 되는 것을 막는다. ) Buffer와 SFP 사이에 랜덤한 4 or 8 바이트의 Canary 값이 삽입된다. 함수 진입시 카나리 값을 설정하고, 함수 종료시 카나리 값이 변조 됐는지 확인한다. ( 카나리 값이 변조됐다면 __stack_check_fail 함수를 통해 프로그램이 종료된다. ) 컴파일 방법 : 카나리 해제 : -fno-stack-protector 카나리 설정 : -..

    [ASC 스터디] 7주차 - Stack Buffer Overflow 문제 풀이, Integer Overflow

    [ASC 스터디] 7주차 - Stack Buffer Overflow 문제 풀이, Integer Overflow

    👉 지난 차시 2022.07.23 - [System-hacking/📖] - [ASC 스터디] 6주차 - 함수의 스택 프레임, 메모리 보호기법, Stack Buffer Overflow 1. Stack Buffer Overflow 실습 문제 풀이 문제 풀이1 : overwrite_ret64 실행할 때마다 버퍼의 주소가 바뀌고 있다 => ASLR 취약한 부분 : scanf로 입력을 받는데 크기 제한을 하지 않고 있다. * 풀이 순서 1. buf의 주소를 가져온다. - 2. size를 int의 4바이트만큼 입력한다. 3. Input에서 버퍼오버플로우를 이용해 쉘코드를 실행시킨다. pwntools을 이용해서 익스플로잇 코드를 짜보자. 1. buf의 주소를 가져온다. p.recvuntil(b'buf address ..

    [ASC 스터디] 6주차 - 함수의 스택 프레임, 메모리 보호기법, Stack Buffer Overflow

    [ASC 스터디] 6주차 - 함수의 스택 프레임, 메모리 보호기법, Stack Buffer Overflow

    👉 지난 차시 2022.07.07 - [System-hacking/📖] - [ASC 스터디] 5주차 - 연습문제 풀이, GDB, IDA, Pwntools 사용법 1. 함수의 스택 프레임 함수 호출 과정 > 함수가 사용할 인자를 스택에 넣고 함수 시작지점으로 점프 > 함수 내에서 사용할 스택 프레임 설정 > 함수 내용 실행 > 실행을 마친 후, 호출 지점으로 돌아가기 위해 스택 복원 #include int add(int a, int b){ return a+b; } int main(){ int result = add(2,3); printf("2+3 = %d\n", result); return 0; } Buffer SFP RET add함수 호출 전 스택 프레임 Buffer SFP RET a b Buffer S..

    [ASC 스터디] 5주차 - 연습문제 풀이, GDB, IDA, Pwntools 사용법

    [ASC 스터디] 5주차 - 연습문제 풀이, GDB, IDA, Pwntools 사용법

    👉 지난 차시 2022.06.27 - [System-hacking/📖] - [ASC 스터디] 4주차 - 레지스터, 어셈블리, 연습문제, GDB 사용법 1. 연습문제 풀이 & 복습 결과 확인 방법 => nasm, gdb sudo apt-get install nasm vi ex1.asm nasm -f elf64 ex1.asm -o ex1.o && ld ex1.o -o ex1.elf ./ex1.elf pwndbg, Pwngdb 사용 방법: git clone 해서 다운 받는다 => pwndbg/ 들어가서 ./setup.sh 해준다 => .gdbinit 파일 수정해준다. => gdb 실행해보기 source ~/pwndbg/gdbinit.py source ~/Pwngdb/pwngdb.py source ~/Pwngd..

    [ASC 스터디] 4주차 - 레지스터, 어셈블리, 연습문제, GDB 사용법

    [ASC 스터디] 4주차 - 레지스터, 어셈블리, 연습문제, GDB 사용법

    👉 지난 차시 2022.06.19 - [System-hacking/📖] - [ASC 스터디] 3주차 - 기초이론, 환경세팅, 메모리구조 ( x86-64 아키텍처 기반 ) 1. 레지스터(Register) CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 보관소이다. 메모리나 보조 기억 장치보다 빠르다. 1.1. 32비트 레지스터 ✨ E로 시작한다. ex) 32bit EAX > 16bit AX > 8bit AH + 8bit AL - 데이터 레지스터 (1) EAX(Accumulator) 연산 결과를 저장하고 함수 반환 값을 담는다. (2) ECX(Counter) 주로 카운팅할 때 사용한다. ( for문의 i 같이 ) (3) EBX(Base) 주로 주소의 기본 값을 저장한다. (4) EDX(Data) 주로 ..