Dreamhack 189

[112] IT 비전공자 [dreamhack][CodeEngn] Malware L06문제 풀기

Thread Mutex란?Thread Mutex(Mutual Exclusion, 상호 배제)는 멀티스레드 프로그래밍에서 공유 자원의 동시 접근 문제를 해결하기 위한 동기화 메커니즘입니다.왜 Mutex가 필요한가?멀티스레드 환경에서는 여러 스레드가 동시에 실행되며, 공유 자원(예: 메모리, 파일, 데이터베이스 등)에 접근하는 경우 데이터가 손상될 수 있습니다. 이를 **Race Condition(경쟁 상태)**라고 합니다.Mutex는 공유 자원에 대한 접근을 하나의 스레드로 제한하여 이러한 문제를 방지합니다.Mutex의 작동 방식잠금(Lock):스레드가 공유 자원에 접근하기 전에 Mutex를 잠급니다.다른 스레드들은 Mutex가 해제될 때까지 대기해야 합니다.해제(Unlock):작업이 완료되면 Mutex를..

[111] IT 비전공자 [dreamhack]Easy Assembly문제 풀기

이 어셈블리 코드는 비밀번호 검증 루틴(check_password)을 나타내며, 두 개의 문자열(혹은 데이터 배열)을 비교하여 특정 조건을 만족하는지 확인하는 로직입니다. 아래에서 명령어 별로 분석하고 이 코드가 하는 작업을 설명하겠습니다.코드 분석초기 상태esi: 입력된 데이터(비밀번호)의 시작 주소.edi: 기준 데이터(예: 올바른 비밀번호)의 시작 주소.eax: 비교할 데이터의 길이.ecx: 결과를 저장하는 레지스터 (모든 연산의 결과를 통합).코드 명령어 해석xor edx, edxedx 레지스터를 0으로 초기화.목적: 이후 연산에 사용할 준비.mov dl, [esi]**esi**가 가리키는 입력 데이터의 바이트를 **dl**로 복사.**esi**는 입력 데이터의 현재 위치를 나타냄.xor dl, ..

[109] IT 비전공자 [dreamhack]mmapped문제 풀기

mmap은 메모리 매핑(Memory Mapping)을 수행하는 시스템 호출로, 파일이나 디바이스의 내용을 가상 메모리에 매핑하여 접근할 수 있도록 해주는 강력한 기능입니다. 이를 통해 파일 데이터를 메모리처럼 사용할 수 있습니다.mmap의 기본 개념메모리 매핑:디스크 파일의 내용을 가상 메모리 공간에 직접 매핑.파일 데이터를 읽거나 쓸 때 별도의 I/O 작업 없이 메모리를 통해 바로 접근 가능.효율성:파일 데이터를 메모리에 로드하고, 메모리 내에서 처리할 수 있으므로 속도가 빠름.대규모 파일 처리 시 유용.mmap의 동작 원리파일을 열고 메모리에 매핑:mmap 호출을 통해, 지정된 파일 디스크립터가 가상 메모리 주소로 매핑됨.이후 이 메모리 주소를 사용하여 파일 내용을 읽거나 변경 가능.페이지 단위 작업..

[108] IT 비전공자 [dreamhack]darimchal_001문제 풀기

소스코드다#include #include #include #define JOKER "\x40\x53\x06\x03\x43\x52\x54\x3b"#define KEY "023661dd4\0"#define TRUE 1#define FALSE 0#define OK 0#define ERRO -1void __print_sw_title (char *sw_name);int __is_valid_pwd (char *pwd);char *__obfuscation (char *pwd, char *key);void __create_tag (char *id);int main (int argc, char *argv[]) { if (argc != 2) { __print_sw_title(argv[0]); ret..

[108] IT 비전공자 [dreamhack]cpp_string문제 풀기

이 정보는 Ubuntu 16.04 LTS 환경에서 실행 중인 바이너리의 보안 설정과 특성을 나타냅니다. 각 항목을 분석하여 해당 바이너리의 보안 강점을 설명하겠습니다.분석1. RELRO (Relocation Read-Only)상태: Full RELRO설명: Global Offset Table(GOT)의 엔트리들을 읽기 전용으로 설정합니다.보안 이점:GOT overwrite 공격(동적 함수 호출 시 악의적인 주소로 리다이렉트)이 불가능합니다.공격 가능성:Full RELRO에서는 GOT 공격을 수행할 수 없으므로, 이 부분은 안전합니다.2. Stack Canary상태: Canary found설명: 함수 호출 시 반환 주소 바로 앞에 **스택 카나리(Stack Canary)**를 삽입하여, 스택 오버플로우로 ..

[106] IT 비전공자 [dreamhack]__environ문제 풀기

__environ은 C와 Unix 계열 운영 체제에서 **환경 변수(Environment Variables)**에 접근하기 위해 사용되는 전역 변수입니다. 이는 환경 변수를 프로세스의 메모리에서 접근할 수 있는 구조를 제공합니다.__environ의 정의 및 역할정의:__environ은 환경 변수 배열을 가리키는 전역 포인터입니다.이는 환경 변수 이름과 값을 문자열 포인터 배열 형태로 저장합니다.형식:extern char **__environ;역할:각 프로세스는 자신의 환경 변수를 가지고 있으며, 이는 메모리에 저장됩니다.환경 변수는 KEY=VALUE 형식의 문자열로 저장되며, __environ은 이를 가리킵니다.__environ와 environ의 차이점__environ:GNU C 라이브러리에서 사용되는 ..