Dreamhack/Dreamhack Wargame (Challenge) 179

[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 라이브러리에서 사용되는 ..

[104] IT 비전공자 [dreamhack]Simple Patch Me문제 풀기

ttps://ah-rok.tistory.com/68 [Dream Hack - Reversing] Simple Patch me문제 해석main 함수dword_40404C 값이 0 으로 시작해서 0x2237까지 증가하면서 while문이 동작하고 있다. sleep(0xE10u) 함수를 사용하여 한번 증가할때마다 1시간씩 걸리는 것을 확인할 수 있다.두가지 방법ah-rok.tistory.comhttps://e-dl.tistory.com/28 [워게임] Simple Patch Me 풀이1. 문제 이해 우선 simple_patch_me 파일을 실행시켜서 동적분석을 하게되면 1년이 지난 후 플래그를 알려주는 프로그램이라는 것을 알 수 있다. 그러면 우리는 I will show you the flag after 1 y..

[103] IT 비전공자 [dreamhack]awesome-basics문제 풀기

보안 상태 분석주어진 바이너리(./chall)의 보안 설정은 다음과 같습니다. 각 항목을 분석하여 보안 수준과 익스플로잇 가능성을 평가합니다.보안 항목 설명 및 상태RELRO (Relocation Read-Only)상태: Full RELROGOT(Global Offset Table)이 완전히 읽기 전용으로 보호됨.GOT Overwrite 공격 불가.STACK CANARY상태: No canary found스택 카나리가 없으므로, 스택 오버플로우를 탐지하지 못함.버퍼 오버플로우를 통한 리턴 주소 덮어쓰기 가능.NX (No Execute)상태: NX disabled데이터 영역(스택, 힙)에서 코드 실행이 허용됨.셸코드 실행 가능.PIE (Position Independent Executable)상태: PIE ..

[102] IT 비전공자 [dreamhack]Cherry문제 풀기

이 프로그램은 보안적으로 설계된 것이 아니며, 메모리 취약점이 포함되어 있습니다. 이를 통해 버퍼 오버플로우 공격을 수행할 가능성이 있습니다. 아래는 코드의 주요 동작, 취약점 분석, 그리고 익스플로잇 가능성에 대한 설명입니다.코드 동작 분석1. 초기화 함수 (initialize)void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30);}버퍼 모드 설정:setvbuf를 통해 입력(stdin)과 출력(stdout)이 버퍼링되지 않도록 설정.타이머 설정:alarm(30)으로 프로그램 실행 시간을 30초로 제한.30초..

[100] IT 비전공자 [dreamhack]FFFFAAAATTT문제 풀기

부트레코드란, 컴퓨터 부팅을 시작하는 데 필요한 데이터를 유지 관리하는 데 사용되는 하드 디스크의저장소 공간 섹션이다. 일반적으로 부팅 레코드는 하드 드라이브의 첫 번째 섹터에 보관되므로시스템이 응용 프로그램을 시작하는 데 필요한 파일을 쉽게 찾고 읽고 실행할 수 있다.파일에 액세스하고 부팅을 시작하는 데 필요한 모든 코드는 마스터 부팅 레코드에 포함된다.출처 ㅣ https://not4dog.tistory.com/34                         참고 블로그https://not4dog.tistory.com/34 [CTF] Dreamhack FFFFAAAATTT 문제 Write-up문제) FIXFIXFIX! FFFAAATTT! (문제파일 다운로드에서 받지 마시고, 아래의 링크를 통해서 문제파..

[99] IT 비전공자 [dreamhack]pwn-library문제 풀기

#include #include #include struct bookstruct{ char bookname[0x20]; char* contents;};__uint32_t booksize;struct bookstruct listbook[0x50];struct bookstruct secretbook;void booklist(){ printf("1. theori theory\n"); printf("2. dreamhack theory\n"); printf("3. einstein theory\n");}int borrow_book(){ if(booksize >= 0x50){ printf("[*] book storage is full!\n"); return 1; } __uint32_t select = 0; pri..