[Mitigation] RELRO | RELocation Read-Only
·
Hacking/Pwnable
쓰기 권한이 불필요한 데이터 세그먼트에 쓰기 권한을 제거함데이터가 배치된 메모리의 특정 부분에 읽기 전용 속성을 부여함 https://m-in-zu.tistory.com/77 Static Link vs Dynamic LinkCompile | 컴파일컴파일은 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업즉, 바이너리 형태로 변환하는 작업이다. (기계어)Pre-Processing : 전처리기 (Prem-in-zu.tistory.com PLT, GOT의 Lazy Binding의 경우, GOT가 존재하는 영역에 쓰기 권한이 부여된다. 또한, ELF의 데이터 세그먼트에는 프로세스의 초기화 및 종료를 진행하는 .init_array, .fini_array가 존재한다..
[Mitigation] PIE | Position Independent Executable
·
Hacking/Pwnable
PIE : Position-Independent Executable무작위 주소에 매필되도 실행 가능한 실행 파일을 의미함 즉, 코드 영역이 무작위 주소에 배치되는 바이너리 ASLR이 코드 영역에 적용되는 것ALSR이 적용되지 않으면, PIE도 적용되지 않음PICPosition-Independent Code 리눅스에는 ELF, 공유 오브젝트(Shared Object, so) 두 가지가 존재함그 중 공유 오브젝트는 재배치(Relocation)이 가능하도록 설계되어있음 재배치가 가능하다는 것은, 메모리의 어느 주소에 코드가 배치되어도 코드의 의미가 훼손되지 않음을 의미한다.이러한 코드를 PIC라고 함 push rbpmov rbp,rspmov rax,QWORD PTR [rip+0x200b3e..
[Reversing] Easy Assembly
·
Hacking/Write Up
Code Analysis만약 ecx의 값이 1이면, 종료하는 루프로 들어가게 된다. 따라서 ecx의 값이 1이면 안됨 -> argc의 값이 1이 아닌 인자test라는 인자를 주었다고 가정하자그러면 에서 로 가게 된다. 이후 strlen을 call하게 된다. ebx에 아무것도 없으므로 ebx : 0push하면, 현재 스택 맨 위가 0이고, esp가 0을 가리킨다. ebx에 현재 eax에 있는 값을 옮긴다. 이후에는 eax부터 하나씩 읽어서 길이 저장후, eax에 return하는 일을 한다. eax에서 바이트 단위로 하나씩 읽어나간다 return 후, start 부분을 보면 ds:0x804a10c에 eax값을 옮긴다. len이라는 전역 변수로 지정하여 * len = argv[1]의 길이이다. esi : ..
[Pwnable] fho
·
Hacking/Write Up
문제 : https://dreamhack.io/wargame/challenges/355 fhoDescription Exploit Tech: Hook Overwrite에서 실습하는 문제입니다. Challenge Updates 2023.04.27: Dockerfile이 제공됩니다.dreamhack.io Environment[*] '/home/minzu/Dreamhack/fho/fho' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled Stripped: NoCanary : canary를 leak하는 과정이 ..
[Pwnable] basic_rop_x86
·
Hacking/Write Up
문제 : https://dreamhack.io/wargame/challenges/30 basic_rop_x86Description 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x86)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일dreamhack.io Environment[*] '/home/minzu/Dreamhack/basic_rop_x86' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PI..
Blockchain Definition
·
Hacking/Web3
Definition | 정의Blockchain Technoloymodern database management technique 현대적인 데이터 베이스 관리 기술▷ 다른 네트워크의 노드들이 체인과 링크로 정보를 공유할 수 있게 해줌 따라서 데이터는 블록에 저장되어있으며, 체인으로 연결되어 있다.이러한 체인은 삭제 및 수정이 불가능하므로 일관성을 유지할 수 있다. Blockchainever-growing ledger in a network*ledger | 원장 : 금융 시스템과 관련된 거래를 기록하는 디지털 또는 물리적 일지블록체인에서의 ledger : 모든 거래 기록이 포함된 증가형 데이터 파일track record of all transactions 모든 거래 내역을 추적해서 기록secure, orde..
함수 호출 규약 (x86, x64)
·
CS/Computer Architecture
Calling Convention | 함수 호출 규약함수 호출 규약 : 함수의 호출 및 반환에 대한 약속한 함수에서 다른 함수를 호출할 때 프로그램의 실행 흐름이 다른 함수로 이동한다. 이 호출된 함수가 반환되면 다시 원래의 함수로 돌아와서 기존의 실행 흐름을 이어나간다. 이때 호출하는 함수를 호출자(caller), 호출되는 함수를 피호출자(Callee)라고 한다. 호출자는 피호출자가 요구하는 파라미터를 전달해줘야하고, 실행이 종료되면 반환 값을 전달받아야한다.  Segment word sizeCalling ConventionParameters in registerStack cleanup by32bits__cdecl Caller__stdcall Callee__fastcallecx, edxCallee__t..
[ make ] makefile 작성하기
·
Linux
개요내가 작성한 소스코드를 gcc로 각각 컴파일하는 것의 불편함을 줄이기 위해 make를 사용한다. make 프로그램이 빌드를 자동으로 수행하려면 각 소스파일의 의존 관계나 빌드 순서, 빌드 옵션등에 대한 정보가 필요하다.이러한 정보를 저장하는 파일이 makefile이다. Make 문법make 문법의 기본 형식은 3 부분으로 구성되어 있다. Target : 생성할 파일 - 특정 레이블을 지정하여 해당 레이블과 관련된 부분만 빌드하는 것이 가능Dependency : Target 생성에 필요한 소스파일이나 오브젝트 파일 등을 나타냄Command : Dependency에 관련된 파일이 수정되면 실행할 명령을 의미Target : Dependency --- Command Command*이때 command 앞은 공..
Docker로 amd64 Linux 환경 설정
·
Linux/Docker
개요리눅스 시스템 등을 공부하면서 x86, x64 환경을 사용해야할 일이 대부분이고, MAC을 사용하는 입장으로써 아주아주 불편했다. 지금까지는 UTM과 같은 가상머신으로 애뮬레이터를 돌리거나, 로컬에서 QEMU를 사용하여 ssh로 연결하는 등의 과정을 통해서 x64 기반의 시스템을 활용해왔다. CTF 문제들 중에 도커를 사용하는 문제들도 존재하고, 아예 독립적인 도커 환경에서 환경을 설정해보고자 시작하게 되었다.  Docker도커는 컨테이너 기반 가상화 도구로, 리눅스 상에서 컨테이너 방식으로 프로세스를 격리해서 실행하고 관리할 수 있도록 한다. 도커를 사용한다면, 이미지를 기반으로 컨테이너를 실행할 수 있으며, 해당 이미지를 관리하기 쉽다.  Docker Image컨테이너를 만드는 데 사용되는 읽기 ..
부팅과 부트로더
·
CS/OS
부팅PC가 켜진 후에 OS가 실행되기 전까지 수행되는 일련의 작업 과정 의미프로세서 초기화 (멀티코어 관련 처리 포함)메모리와 외부 디바이스 검사 및 초기화부트로더를 메모리에 복사하기OS를 시작하는 과정BIOS (Basic Input / Output System) : 하드웨어와 관련된 부팅 작업POST (Power On Self Test) : BIOS가 수행하는 각종 테스트나 초기화 BIOS메인보드에 포함된 펌웨어(Firmware)의 일종입출력을 담당하는 작은 프로그램PC 메인보드에 롬(ROM)이나 플래시 메모리로 존재전원이 켜지면서 동시에 프로세서가 가장 먼저 실행하는 코드부팅 옵션 설정시스템 전반적인 설정 (Configuration) 관리설정 값으로 시스템을 초기화하여 OS 실행BIOS가 제공하는 기..