함수 호출 규약 (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가 제공하는 기..
운영 모드
·
CS/OS
x86-64 프로세서 (인텔 64비트 호환 프로세서)에는 다섯 가지의 운영 모드가 존재한다. 컨트롤 레지스터와 인터럽트를 통해 각 모드로 전환할 수 있다.   다섯 가지 운영모드가 모두 구현되어야만 OS를 만들 수 있는 것은 아니다. 목적에 따라 몇개의 운영모드는 구현하지 않거나 필요하면 구현하는 방식으로 진행할 수 있기 때문에, 이 중에서도 필수모드와 선택 모드로 구분된다.  운영 모드필수 운영 모드리얼모드프로세서가 전원이 켜지거나 리셋되면 프로세서는 리얼모드로 진입함 (이전에 어떤 상태인지는 상관 없음)16비트 프로세스와 동일하게 동작BIOS(Basic Input Output System)의 여러 기능을 사용할 수 있음 => 디스크 읽기 및 쓰기, 그래픽 모드 전환 등 제공디바이스 드라이버를 제작하지..
[Pwnable] basic_rop_x64
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/29 basic_rop_x64Description 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x64)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일dreamhack.io Environment Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) Stripped: No..
[Pwnable] rop
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/354/ ropDescription Exploit Tech: Return Oriented Programming에서 실습하는 문제입니다. 문제 수정 내역 2023.04.25: Ubuntu 22.04 환경으로 업데이트하였습니다.dreamhack.ioEnvironment$ checksec rop Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)Canary를 우회하는 과정이 있어야하고, NX bit가 enable이므로 stack 등에 쓰기 ..
SSC
·
CS/Algorithm
SSC : Strongly Connected ComponentSCC : Maximul Subset of Nodes s.t., all Nodes are Reachable from Each OtherHow do you find them?Strongly Connected라는건, 양쪽 방향으로 가는 길이 있다는 것이다.어디서 잡든 다른 노드로 가는 길이 있고, 다시 돌아오는 길이 있다. SSC의 간단한 예시는 cycle 한 노드가 여려 곳에 속하지는 않음만약, 두개의 SCC가 한 노드를 공유한다고 생각하자. -> 그러면 결국 이 두개는 한개의 SCC이다. 따라서 두 컴포넌트가 그냥 합쳐지기 때문에 한 노드를 공유하는 순간 하나의 SCC가 된다.  Let's DFSDFS를 해서 Tree 가 여러개 나왔다고 가정하..
암호화 통신
·
Hacking/Cryptography
터널링인터넷을 사적이며 안전한 네트워크의 일부로 사용하는 기술내부 네트워크 : 데이터의 기밀성을 위한 전용 회선 필요임대회선 사용 : 고비용기존의 인터넷을 임대회선처럼 전용 회선으로 사용 : VPN -> PPTP, L2TF, IPSec, SSL등 암호화 프로토콜 사용 IPSec3계층의 암호화 프로토콜IPv6에서 필수 요소로 운영체제의 일부로 설정되어 있음너무 과도하게 기술적이라는 단점이 있음라우터, 개인 단말 컴퓨터, 침입 탐지 시스템 등에 설치될 수 있음 IP계층 헤더 + IPSec헤더 + 암호화된 IP 데이터 형태로 된다. 내부 네트워크 안에서는 그냥 전송됨*IPSec헤더는 암호화에 필요한 정보 IPSec 주요 기능IKE (키 관리) : 상호 인증 및 대칭키 공유 설정, 두 컴퓨터 간의 보안 연결(S..
암호 프로토콜 활용
·
Hacking/Cryptography
정보 은닉 | 스테가노그래피감추어진 기록 : 정보가 전송된다는 사실을 숨기려는 의도워터마크 : 식별자를 원본에 첨가스테가노 그래피 : 정보 은닉 / 비밀 채널워터마크유래  : 편지지의 제작사를 표시하기 위해 편지지에 투명 무늬를 희미하게 프린트한 것을 워터마크라고 부른 데서 시작함디지털 음악 정보 속에 저작권과 관련된 식별 정보 삽입 : 불법적인 재패보의 책임 식별 가시 워터마킹 : 보이는 것ex) 종이로 출력해 판매되는 문서의 페이지 전체에 옅은 색으로 소유권을 가진 회사의 로고 / 지폐투명 워터마킹 : 보이지 않는 것ex) 영상이나 오디오 파일 등 미디어 파일 내에서 인지되지 않는 상태로 삽입 스테가노그래피미리 정해진 약속을 통해 원래의 것과는 전혀 관련 없는 데이터를 약속에 맞춰 이용하여 은밀한 정..