워게임 93

[55] IT 비전공자 [dreamhack]rev-basic-8문제 풀기

55번째 문제 가보자고!                int __fastcall main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_140001210("%256s", v4); if ( (unsigned int)sub_140001000(v4) ) puts("Correct"); else puts("Wrong"); return 0;} sub_140001000 조건을 확인해보자__int64 __fastcall sub_140001000(__int6..

[54] IT 비전공자 [dreamhack]basic_exploitation_003문제 풀기

주어진 정보를 바탕으로 Ubuntu 16.04에서 실행되는 32비트 바이너리의 보안 특성과 그 의미를 분석하겠습니다. ### 1. 시스템 정보 - **Ubuntu 16.04**:   - 사용 중인 운영 체제의 버전입니다. 16.04는 오래된 버전으로, 최신 보안 업데이트가 적용되지 않을 수 있습니다. ### 2. 아키텍처 정보 - **Arch: i386-32-little**:   - 이 바이너리는 32비트 아키텍처로 컴파일되었습니다.    - 32비트 아키텍처는 주소 공간이 4GB로 제한되며, 보안 공격에 대한 대응이 더 어려울 수 있습니다. ### 3. 보안 기능 - **RELRO: Partial RELRO**:   - RELRO( Read-Only Relocations)는 동적 연결된 라이브러리 함수..

[53] IT 비전공자 [dreamhack]out_of_bound문제 풀기

후후 딱봐도 스택오버플로우 문제군 (하지만 풀 줄은 모르는..) ○ Out Of Bound(OOB)배열이나 리스트와 같은 데이터 구조에서 정의된 인덱스나 범위를 넘어선 위치에 접근하는 경우를 의미한다.즉, 배열의 범위를 벗어나는 참조라 하여 Out of Bound라고 부른다.예를 들어보자. char command[10]이 있다고 하자. command[idx]을 조회하는 과정에서 idx를 10으로 입력하면 어떻게 될까? command[10]을 참조하는 상황이 발생한다. command[10]은 idx가 0~9만 존재한다. 하지만 9를 벗어나는 10을 참조하게 된다.즉, command[10]의 영역을 벗어나는 메모리를 참조하게 된다.이렇게 개발자가 의도하지 않은 메모리 영역을 참조하는 취약점을 Out of B..

[52] IT 비전공자 [dreamhack]simple_sqli_chatgpt문제 풀기

소스코드를 보자 #!/usr/bin/python3from flask import Flask, request, render_template, gimport sqlite3import osimport binasciiapp = Flask(__name__)app.secret_key = os.urandom(32)try: FLAG = open('./flag.txt', 'r').read()except: FLAG = '[**FLAG**]'DATABASE = "database.db"if os.path.exists(DATABASE) == False: db = sqlite3.connect(DATABASE) db.execute('create table users(userid char(100), userpa..

[51] IT 비전공자 [dreamhack]rev-basic-6문제 풀기

51번째 문제는 rev-basic!! 반가운 친구~!        int __fastcall main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_140001210("%256s", v4); if ( (unsigned int)sub_140001000(v4) ) puts("Correct"); else puts("Wrong"); return 0;} 편안 해졌죠?    이 `main` 함수를 분석해 보겠습니다. 이 함수에는 몇몇 함수 호출과 버퍼..

[50] IT 비전공자 [dreamhack]php-1문제 풀기

50번째 문제!!!!! php 가보자!!!    **LFI (Local File Inclusion)**는 웹 애플리케이션의 보안 취약점 중 하나로, 사용자가 서버의 로컬 파일을 불법적으로 읽을 수 있는 취약점입니다. **LFI 공격**은 주로 웹 애플리케이션에서 파일 경로를 사용자 입력으로 받아들일 때 적절한 검증 없이 이를 처리하는 경우 발생합니다. 공격자가 이를 악용하면 서버의 중요한 정보에 접근하거나, 심지어 악성 코드를 실행할 수도 있습니다. ### LFI 동작 방식 LFI 취약점은 일반적으로 다음과 같은 방식으로 동작합니다: 1. 웹 애플리케이션이 사용자로부터 특정 파일 경로를 입력받아 해당 파일의 내용을 출력합니다. 2. 파일 경로에 대한 제한이 없거나 제한이 부적절할 경우, 공격자는 파일 경..

[49] IT 비전공자 [dreamhack]XSS Filtering Bypass문제 풀기

50문제까지 벌써 한문제 남았다..시간 정말 빠르다..흘러가는 시간을 잡고싶지만 그저 하루하루 시간을 즐겁고 소중하게 보내는게 최선이다 오늘도 즐겁게 문제를 풀어보자!  **XSS Filtering Bypass** refers to techniques used to bypass security filters that are designed to prevent **Cross-Site Scripting (XSS)** attacks. XSS is a type of security vulnerability in which an attacker injects malicious scripts, typically JavaScript, into websites viewed by other users. The goal ..

[48] IT 비전공자 [dreamhack]proxy-1문제 풀기

10월의 마지막 주..겨울의 시작!  gpt:  **Raw Socket Sender**는 네트워크 소켓을 통해 데이터 패킷을 생성하고 전송하는 프로그램 또는 도구입니다. 이러한 소켓은 운영 체제의 일반적인 TCP/IP 스택을 우회하여 직접적으로 프로토콜 레벨에서 패킷을 조작할 수 있게 해줍니다. Raw socket을 사용하면 사용자 정의 프로토콜이나 특정 목적을 위해 데이터를 전송할 수 있습니다. ### 주요 기능 1. **패킷 생성 및 전송**:    - Raw socket을 사용하면 사용자가 직접 TCP, UDP 또는 ICMP 패킷을 생성하고 전송할 수 있습니다.    - 헤더와 데이터의 각 필드를 세밀하게 조정할 수 있어, 패킷의 세부 사항을 완벽하게 제어할 수 있습니다. 2. **프로토콜 분석**..

[47] IT 비전공자 [dreamhack]simple-ssti문제 풀기

날씨가 겨울이 온게 실감난다. 다들 감기 조심하시길..47번째 문제 가자~     지피티야지피티야 SSTL이 뭐야 GPT: SSTI (Server-Side Template Injection) 취약점은 웹 애플리케이션에서 서버 측 템플릿 엔진을 사용할 때 발생할 수 있는 보안 취약점입니다. 이 취약점은 악의적인 사용자가 템플릿에 악성 코드를 주입하여 서버에서 실행할 수 있게 하는 공격입니다. ### SSTI 취약점의 작동 원리 1. **템플릿 엔진**: 많은 웹 프레임워크는 HTML을 동적으로 생성하기 위해 템플릿 엔진을 사용합니다. 이러한 엔진은 사용자가 제공한 데이터를 템플릿에 삽입하여 최종 HTML을 생성합니다.   사용자가 제공한데이터 -> 템플릿에 삽입 -> HTML 최종 생성   2. **사용자..

[46] IT 비전공자 [dreamhack]rev-basic-4문제 풀기

벌써 10월도 끝나간다..시간이 정말 빠르다는걸 느낀다. 오늘도 후회없이 살아보자!                디컴파일러해보자!     주어진 C/C++ 코드의 main 함수는 사용자의 입력을 받고, 그 입력을 특정 함수로 검증하여 "Correct" 또는 "Wrong"을 출력하는 구조입니다. 각 부분을 자세히 분석하겠습니다.코드 분석1. 함수 서명 int __fastcall main(int argc, const char **argv, const char **envp)int: 함수가 정수를 반환함을 나타냅니다. 일반적으로 프로그램의 종료 상태를 나타냅니다.__fastcall: 호출 규약으로, 일부 인자를 레지스터를 통해 전달하여 성능을 향상시킵니다.argc: 명령줄 인자의 개수입니다.argv: 각 인자를 ..