[Pwnable] Return to Library
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/353 Return to LibraryDescription Exploit Tech: Return to Library에서 실습하는 문제입니다.dreamhack.io Environment Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)NX enabled : stack, heap 등에 실행 권한이 없음 ASLR 적용됨PIE 없음 Code Analysis// Name: rtl.c// Compile: gcc -o rtl rtl.c -fno-..
Network Layer | 네트워크 계층구조
·
CS/Computer Network
계층구조크고 복잡한 시스템의 잘 정의된 특정 부분을 논의할 수 있도록 해준다 (단순화 해줌)한 계층의 구현이 변화하더라도, 시스템의 나머지 부분은 변화하지 않는다.네트워크 계층 구조를 나타내는 방법에는 크게 두 가지가 있는데OSI 7계층TCP/IP 5계층이 있다. 구조적 차이는 OSI 7계층의 5,6,7 계층이 합쳐져 TCP/IP 5계층의 5계층이 된 것이다.  계층 구조의 각 계층은 그 계층에서 어떤 동작을 취하고그 계층 바로 아래 계층 서비스를 사용함으로써 서비스를 제공한다. Service Model한 계층은 상위 계층에게 제공하는 서비스(Service)에 관심을 가짐각 계층은 그 계층에서 어떤 행위를 하며, 아래 계층의 Service를 사용함각 계층은 독립적이지만, 서로 영향을 주고 받음 TCP/I..
Wireshark 캡처하기 (BIOCPROMISC: Operation not supported on socket)
·
CS/Computer Network
오류Wireshark를 이용하여 Ethernet 등을 캡처하고자 하면 이런 경고문이 뜬다BIOCPROMISC: Operation not supported on socket이다이 뜻은 프로미스큐어스 모드'(Promiscuous Mode)로 전환하려 할 때 발생하는 문제이다. 프로미스큐어스 모드란, 내 MAC주소가 아닌 곳으로 들어오는 패킷까지 전부 패킷 필터링을 하지 않도록 해주는 모드이다설정해두면 위험하니 꺼두도록 하자 ^_^ 해결Wireshark의 상단에서 Capture > Options를 선택하면이러한 창이 뜬다.  여기에서 Enable promiscuous mod on all interface라고 체크 되어있는 부분을 해제해준 후, Start하면 정상적으로 패킷캡처가 이루어질 수 있다.
Quick Sort
·
CS/Data Structure
Quick Sort Definition int qsort(int a[], int n){ int d; int p = a[0]; //Rearrange a[] so that // a[d] == p // a[0], a[1], ..., a[d-1] p qsort(a,d); qsort(a+d+1, n-d-1); return ;}a[0]에 있던 값이 p이고, p가 d에 가도록 rearrange한다.* rearrange란 ? 값이 없어지지 않고 그대로 유지되지만 위치만 바뀐다a[0]부터, a[d-1]까지 있는 얘들은 모두 p보다 작음a[d+1]부터, a[n-1]까지는 모두 p보다 큼> O(n) 시간 안에 해결함 Q) 어떻게 O(n)시간에 해결하는가?A)1. p보다 큰건 +라..
[Exploit] Return to Library
·
Hacking/Pwnable
Library자주 사용하는 소스코드를 미리 작성하여 프로그래머가 원할 때 빠르게 사용할 수 있게 가공된 형태컴파일 시간 단축소스 코드를 쉽게 사용 가능소스 코드의 일부를 보호 및 비공개 가능PLT & GOTPLT (procedure linkage table) : 외부 라이브러리에서 함수가 plt에 매핑되어 있다.GOT (golbal offset table) : 함수의 주소를 담고 있는 테이블로 plt가 got를 참조한다.PLT와 GOT에 대한 자세한 설명 : https://m-in-zu.tistory.com/77 Static Link vs Dynamic LinkCompile | 컴파일컴파일은 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업즉, 바이너리 형태로..
Static Link vs Dynamic Link
·
CS/Computer Architecture
Compile | 컴파일컴파일은 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업즉, 바이너리 형태로 변환하는 작업이다. (기계어)Pre-Processing : 전처리기 (Pre-processor)을 통해 소스 파일을 수정된 소스 파일 (전처리된 소스 파일)로 변환Compilation : 컴파일러 (Compiler)을 통해 수정된 소스 파일을 어셈블리 파일로 변환Assembly : 어셈블러 (Assembler)을 통해 어셈블리어 파일을 오브젝트 파일로 변환 - 오브젝트 파일부터 바이너리 형태Linking : 링커 (Linker)을 통해 오브젝트 파일들과 라이브러리, 헤더 파일들을 하나로 묶어 실행 파일로 변환이때 Linking 과정에서 Static Linkin..
HALTING Problem
·
CS/Data Structure
문제프로그램 M과 입력 X가 있을 때, M에 입력 X를 주고 수행시키면 종료할 것인가? M은 그냥 어떠한 프로그램 X는 어떠한 문자열 ex) abcabadM과 X가 모두 문자열이라고 가정함 명확한 두 가지 경우가 존재함1. 멈추는 것을 알 수 있는 경우 * 안 읽고 멈추는 것도 멈추는 것임 2. 멈추지 않는 것을 알 수 있는 경우 ex) 문자열을 입력받고 또 다음 문자열을 위해 기다리는 행위 등 HALTING Problem은 어떤 프로그램이 종료하지 않는지를 돌려보기 전에 알아야한다.Q. 돌려보기 전에 알아야하는 이유는 뭘까?A. 돌려봐서 끝난다면 끝나는 것을 알 수 있지만, 안 끝나고 있다면 "언젠가는" 끝난다는 것을 말할 수 있어야함ex) 10시간을 기다렸기에 끝나지 않을지, 10시간을 기다렸지만 언..
[Mitigation] ASLR
·
Hacking/Pwnable
Definition | 정의Address Space Layout Randomization바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 기법 커널에서 지원하는 보호기법으로, 운영체제마다 ASLR이 구현되어 있는 방식이 다르다리눅스를 기반으로 설명할 예정ASLR 확인하기명령어cat /proc/sys/kernel/randomize_va_space0 : No ASLR1 : Conservative Randomization - Stack, Library, vdso등 2 : Conservative Randomization + brk : brk로 할당한 영역까지checksec리눅스의 경우, checksec로 확인할 수 있음대부분의 보호 기법은 checksec로 확인 가능하다 (win..
[Mitigation] NX
·
Hacking/Pwnable
Definition | 정의No-eXecute의 약자로, 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역을 분리하는 보호기법 코드 영역에 쓰기 권한이 있으면 공격자가 코드르 수정하여 원하는 코드가 실행되게 할 수 있음스택, 데이터1 영역에 실행권한이 있으면 스택에 쉘 코드를 넣어 코드가 실행될 수 있음이러한 상황을 막기 위해 NX가 적용됨 보호기법들마다, 적용되는 단계가 다르다NX bit의 경우 CPU에서 지원해줌NX 확인하기gdb의 vmmappwndbg> vmmapLEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA Start End Perm Size Offset File 0x40000..
[Pwnable] Return to Shellcode
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/352/ Return to ShellcodeDescription Exploit Tech: Return to Shellcode에서 실습하는 문제입니다.dreamhack.ioEnvironment Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX unknown - GNU_STACK missing PIE: PIE enabled Stack: Executable RWX: Has RWX segmentsRELRO, Canary를 확인할 수 있음또한, stack이 현재 executab..