본문 바로가기
반응형

전체 글23

[Dreamhack] baby-bof 워게임 풀이 드림핵에서 제공하는 서버를 생성해 접속하면 다음과 같은 화면이 나타나고, 문제 파일을 보면 deploy 폴더에 baby-bof.c 파일이 있는 것을 확인할 수 있다. 화면에 win function이라는 말이 나오기 때문에 name으로 win을 넣어보았다. baby-bof.c 파일을 살펴보면 win 함수의 주소로 이동 시 flag가 출력됨을 알 수 있었다. 문제가 buffer overflow에 관한 문제이므로, name에 win을 입력 후, hex value로는 win function의 주소를 넣었다. 또한, name 입력 시 출력되는 addr이 총 16개이므로 이를 overflow 하기 위해 integer count로는 20을 넣었다. 그 결과, 모든 addr의 value가 win function의 주.. 2025. 9. 29.
[Dreamhack] simple-operation 워게임 풀이 이 문제는 리버싱 문제로, 직접 바이너리를 분석해야 할 것으로 보인다. 먼저, 드림핵 자체 서버를 부팅하여 리눅스로 접속해 Input으로 1234를 넣어보았더니 다음과 같이 출력된다. 우리는 바이너리 분석을 통해 올바른 Input을 찾아야 한다. Ghidra로 다운로드한 문제 파일 중 chall을 분석해 보았다. 알아내야 할 것은 Input? 질문에 맞는 올바른 값이므로 Input이라는 단어를 찾아야 한다. 따라서 Search - For Strings 기능을 이용해 문자열을 검색하면 다음과 같이 출력되며, "Input? "이라는 문자열을 찾을 수 있었다. 위 Input을 더블클릭하면 메인 화면에 다음과 같이 나타난다. 이 때, Input? 에 해당하는 main 부분을 더블클릭해 나오는 화면에서 MOV를.. 2025. 9. 25.
[Dreamhack] devtools-sources 워게임 풀이 및 개념 먼저, 문제 파일을 다운로드하여 확인하면 다음과 같은 파일들을 확인할 수 있다. 이 중 index 파일을 클릭하면 아래와 같은 웹 페이지가 나타난다. 아래 페이지에서 개발자 도구 탭(F12)을 열어 Sources 탭으로 가면 해당 페이지의 프런트엔드 소스 코드를 확인할 수 있다. 개발자 탭의 Sources 탭에서 Ctrl+Shift+F를 눌러 검색 기능을 실행한 후, 플래그 형식의 DH를 검색하니 바로 플래그 값을 찾을 수 있었고 해당 값은 webpack://의 styles 폴더의 main.scss 파일에 위치해 있었다. 이 문제는 단순히 개발자 도구를 사용해보기 위한 기본적인 문제인 것으로 파악된다. [개발자 도구]웹 브라우저에 내장된 도구 모음으로, 웹 애플리케이션을 만들고 디버깅하는 데 유용하며,.. 2025. 9. 17.
[Dreamhack] cookie 워게임 풀이 및 개념 (글을 작성하기에 앞서, 블로그 글은 풀이 순서대로 작성 예정이며 워게임 새싹 단계부터 풀이자가 많은 순으로 풀이하였다.) 문제를 풀기 전, 문제 파일을 받고 서버를 생성해야 한다. 서버 생성은 문제 파일을 통해 직접 시도를 해보았지만 flag 파일이 존재하지 않으므로 드림핵 자체 서버를 생성하는 것을 추천한다. 기본적으로 3개의 크레딧을 제공하므로, 쉬운 난이도의 문제들을 풀 때는 돈이 들 일은 없을 것으로 예상한다. 문제 파일은 app.py 하나인데, vs code를 이용해 코드를 살펴보면 파이썬 Flask 기반의 간단한 로그인/세션이 구현되어 있는 웹 애플리케이션임을 알 수 있다. 사용자가 /login에서 로그인하면 username이라는 쿠키가 발급되며, / 페이지에서는 이 쿠키 값에 따라 화면이 .. 2025. 9. 15.
SW(소프트웨어) 업데이트 보안 #SW 업데이트: 이미 배포된 소프트웨어 제품의 기능 개선 또는 버그나 보안 취약점 등을 수정하기 위해 개발사가 내놓는 프로그램을 지칭한다. 수동/자동으로 나뉘며, 중요도에 따라 중요(필수)/선택으로 구분한다. #SW 업데이트 체계: 최신 버전의 소프트웨어를 검색, 다운로드, 설치하는 체계를 말한다. 그리고 업데이트 서버(업데이트 프로그램 전송), 업데이트 클라이언트(실제 업데이트 담당), 통신 채널(업데이트 서버와 클라이언트 사이에 설치프로그램 전송)로 구성된다. #SW 업데이트 체계 보안위협 유형(서버) 서버 장악: 별도의 해킹을 통해 외부에서 업데이트 서버에 원격 침투 → 업데이트에 사용되는 설정정보나 업데이트 파일 위/변조 →해당 SW 사용자 단말 전체에 악성코드 유포 가능!악성코드 업로드: 업데.. 2025. 7. 2.
[임베디드 보안] 펌웨어란? 임베디드 장비의 프로세서는 Intel, AMD 같은 CISC 기반 아키텍처보다 ARM, MIPS 같은 RISC 기반의 아키텍처를 주로 사용한하므로, 이에 따른 공격 기법의 차이 존재한다. #펌웨어: 하드웨어와 소프트웨어의 중간에 위치하며, 일반적으로 하드웨어 장치 내부에서 해당 장치를 제어하거나 특정 기능을 수행한다. ROM이나 플래시 메모리에 저장되어 있어, 전원이 꺼지거나 재부트 중에도 내용이 유지되며, 대표적인 예시로 BIOS/UEFI가 있다. 주로 C나 어셈블리 언어로 개발하고, 일반 사용자가 직접 수정하기에 어렵다.- 종류: BIOS/UEFI(부팅 프로그램), 임베디드 펌웨어, 디바이스 드라이버(OS-하드웨어 간), 네트워크 장비 펌웨어 #임베디드 장비의 부팅 흐름(general): MCU(마이.. 2025. 6. 22.
임베디드 시스템 아키텍처(1) #임베디드 시스템: 직접 또는 연속적인 사용자 상호작용 없이 특정 작업을 수행하는 컴퓨팅 장치- 베어메탈(bare-metal): 소프트웨어가 설치되지 않은 물리적 하드웨어. 추가로, 베어메탈 서버는 가상화 없이 물리 서버를 단독으로 사용하는 환경을 말한다. 즉, 하이퍼바이저(가상화 소프트웨어)를 거치지 않고 OS를 직접 설치해 서버를 사용한다. #임베디드 시스템 아키텍처의 중심 = MCU(MicroController Unit, 마이크로컨트롤러)- MCU의 일반적인 구성요소: 마이크로프로세서, RAM, 플래시 메모리, 직렬 트랜시버, 기타.- 모든 구성요소는 로직 조정을 책임지고 있는 프로세서 내의 버스 라인을 공유해야 한다. RAM, 플래시 메모리, 트랜시버의 제어 레지스터는 모두 같은 물리 주소 공간에.. 2025. 6. 21.
[펌웨어/리버싱] Ghidra, Angr GhidraGhidra란 미국 국가 안보국(NSA)에서 제작한 JAVA 기반의 역어셈블러(리버싱) 프레임워크로, 다양한 플러그인들을 가지고 있어 유용하다. IDA Pro와 비교했을 때, 모든 아키텍처를 지원하는데도 불구하고 무료라는 점에서 큰 장점을 가지고 있지만, 디버깅은 불가능하다는 단점 또한 존재한다. Ghidra는 JAVA로 개발되었기 때문에 이를 원활하게 사용하기 위해서는 jdk 11 이상 버전의 설치가  필요하다. 또, 바이너리 파일을 제공하면 컴파일할 때 거의 1:1로 매칭되는 C코드를 생성해 줄 정도로 매우 정교하다. (Ghidra 설치 링크)https://ghidra-sre.org/ GhidraGetting Help Ghidra provides context-sensitive help o.. 2025. 4. 4.
[임베디드 시스템 보안] 펌웨어 개념 및 분석, 보안 사항 Firmware펌웨어는 임베디드 시스템을 위한 소프트웨어로, 비휘발성 메모리에 저장된다.많은 벤더사(제조업체)들은 펌웨어를 저장하기 위해 플래시 메모리를 사용하며, 이를 통해 시스템 기능을 개선하고 펌웨어를 업데이트 함으로써 보안 취약점을 쉽게 수정할 수 있다.펌웨어 업데이트를 위해 펌웨어 이미지가 제공되며, 업데이트는 사용자가 수동으로 하거나, 장치가 자동으로 처리할 수 있다. (오픈소스 펌웨어 이미지 - OpenWrt)https://downloads.openwrt.org/releases/18.06.4/targets/ar71xx/generic/ Index of /releases/18.06.4/targets/ar71xx/generic/ downloads.openwrt.orghttps://downloads.. 2025. 3. 30.
버퍼 오버플로우 공격(BOF, Buffer Overflow Attack) Buffer Overflow= 연속된 메모리 공간을 사용하는 프로그램이 할당된 메모리를 넘어선 위치에 자료를 읽거나 쓰려고 할 때 발생.이로 인해 프로그램 오작동 발생 또는 악의적 코드 실행이 가능함. 1. Stack Buffer Overflow: 함수 처리를 위해 지역변수와 매개변수가 위치하는 스택에 할당된 버퍼들이 문자열 계산 등에 의해 정의된 버퍼 크기의 한계치를 초과하는 경우 발생. 이를 통해 복귀 주소(return address)를 변경하고 공격자가 원하는 코드 실행 가능. 2. Heap Buffer Overflow: 사용자가 malloc() 등의 메모리 할당 함수를 통해 동적으로 할당하는 힙에 할당된 버퍼들에 문자열 등이 저장될 때, 최초에 정의된 힙의 사이즈를 초과해 저장될 경우 발생. 이를.. 2025. 3. 27.
반응형