[개요]셸 스크립트로는 바이너리(Binary) 데이터가 포함된 실행 가능한 충돌 파일을 만드는 데 한계가 있음을 확인했다. 이 글은 더 낮은 수준의 제어가 가능한 C언어를 이용해 이 목표에 도전했던 과정의 기록이다.이 실습은 C언어의 파일 처리, 컴파일 과정에 대한 이해를 바탕으로, 정교한 공격 증명(PoC) 코드를 만드는 과정에서 겪을 수 있는 논리적 함정과 그 해결책을 순서대로 보여준다.[1차 시도: C언어와 하드코딩된 기준점의 함정]첫 번째 전략은 fastcoll로 기준이 될 '착한' 충돌 블록(block1)을 미리 만들고, C 프로그램 코드 안에 이 block1의 내용을 '정답'으로 하드코딩하는 것이었다. 가. 기준 블록 생성 및 C 헤더 파일로 변환Bash # 실습 폴더 준비choi@Deskto..
https://originalchoi.tistory.com/entry/MD5-%ED%95%B4%EC%8B%9C-%EC%B6%A9%EB%8F%8C-%EC%8B%A4%EC%8A%B5 MD5 해시 충돌 실습보안, 암호화에 관해서 배우기 시작하다보면 해쉬에 관한 이야기는 빠지지 않는다.그렇다면 해쉬는 정말로 안전한가? 에 대한 정리 노트를 살펴보자.결론부터 말씀드리면, 현대 보안 환경에서 Moriginalchoi.tistory.com 이전 글에 이어지는 실습이다. fastcoll 을 사용해서 추가 bit 를 덧붙임으로 MD5 값이 같은 서로 다른 파일을 생성해 낼 수 있음을 확인했다.그런데 이를 잘 응용하면 같은 MD5 임에도 완전히 다르게 실행하는 일종의 트로이목마 파일을 만들어낼 수 있지 않을까? 이게 실제..
보안, 암호화에 관해서 배우기 시작하다보면 해쉬에 관한 이야기는 빠지지 않는다.그렇다면 해쉬는 정말로 안전한가? 에 대한 정리 노트를 살펴보자.결론부터 말씀드리면, 현대 보안 환경에서 MD5는 더 이상 '안전한' 해시 알고리즘으로 간주되지 않으며, 특히 SHA-256과 비교했을 때 보안 강도가 매우 낮습니다. 저 또한 이 의견에 전적으로 동의하며, 왜 그런지 기술적인 이유와 실제적인 위협 사례를 들어 설명해 드리겠습니다.MD5가 안전하지 않은 결정적인 이유: '충돌(Collision)' 취약점사용자님이 보신 자료들에서 공통적으로 지적하는 MD5의 가장 큰 문제는 바로 충돌(Collision)에 치명적으로 취약하다는 점입니다.해시 충돌이란? 서로 다른 두 개의 데이터(파일, 메시지 등)를 해시 함수에 입력..
우리는 매일같이 웹 브라우저 주소창에서 자물쇠 아이콘(🔒)을 봅니다.이 작은 아이콘은 "이 웹사이트와의 통신은 안전하게 암호화되고 있습니다"라는 신뢰의 상징입니다. 그렇다면 이 암호화, 즉 HTTPS 통신은 어떤 원리로 동작하는 것일까요?이론으로만 배우는 암호화는 막연하게 느껴질 수 있습니다. 이번 포스팅에서는 Windows Subsystem for Linux (WSL) 환경에 직접 웹 서버를 구축하고,openssl 명령어를 사용해 SSL 인증서를 만들어 적용하는 전 과정을 실습해 보겠습니다. 우선 아래 명령어를 통해 openssl 을 이용한 대칭키 암호화, 비대칭키 암호화를 진행해본다.[대칭키 암호화, 복호화]echo 'this is the plain text' > plaintext.txt;opens..
bandit 워게임 뿐만 아니라ssh 를 통해서 일반적인 방식으로 서버에 접속하다 보면첫 접속시에 서버 핑거 프린터를 등록하시겠습니까? 등의 확인을 마주하게 된다 OverTheWire 워게임에 SSH 접속 시에 나오는 메시지에 대해 살펴보자이 개념을 이해하는 것은 인프라를 운영하고 보안을 이해하는 데 매우 중요합니다. 위의 메세지에서 한번 더 강조하고 싶은것은서버의 공개키 **'자체'**라기보다는 공개키의 **'핑거프린트(Fingerprint, 지문)'** 를 확인하는 과정이라는 것이다. 1. 공개키 핑거프린트(Fingerprint)란?SSH로 처음 서버에 접속하면, 서버는 "나 이런 공개키를 가진 서버야"라고 자신의 공개키를 클라이언트(지금의 윈도우 PC)에게 보내줍니다.공개키 원본: 매우 긴 텍스트..
pip install pygameimport pygameimport sys# 초기화pygame.init()# 화면 설정screen = pygame.display.set_mode((640, 480))pygame.display.set_caption('키보드 입력 예제')# 색상 설정WHITE = (255, 255, 255)BLACK = (0, 0, 0)# 폰트 설정font = pygame.font.Font(None, 74)# 텍스트 초기화text = ""text_surface = font.render(text, True, BLACK)# 메인 루프running = Truewhile running: for event in pygame.event.get(): if event.type == pyg..
from flask import Flask, request, render_template, redirect, url_for, sessionimport randomimport sqlite3import osimport webbrowserapp = Flask(__name__)app.secret_key = os.urandom(32)DATABASE = "scores.db"PROVERBS_FILE = 'static/사자성어.txt'# 파일 읽기with open(PROVERBS_FILE, 'r', encoding='utf-8') as file: lines = file.readlines()# 사자성어와 설명을 분리하여 저장proverbs = {}for line in lines: parts = line.str..
import randomfrom colorama import init, Fore, Styleimport webbrowserimport sqlite3init()# 파일 읽기file_path = 'D:\\최정훈\\python sia quiz\\사자성어 퀴즈\\사자성어.txt' with open(file_path, 'r', encoding='utf-8') as file: lines = file.readlines() # 사자성어와 설명을 분리하여 저장proverbs = {}for line in lines: parts = line.strip().split(':') if len(parts) == 2: proverbs[parts[0].strip()] = parts[1].strip()# 데..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
- Total
- Today
- Yesterday
- 웹보안
- 32bit
- gz
- Bandit
- find
- tar
- bz2
- ssh
- grep
- OpenSSL
- X32
- HTTPS
- Strings
- tr
- solution
- nc
- 풀이
- 압축파일
- SSL
- Linux
- natas7
- Natas
- over the wire
- 리터럴
- Encode
- 리눅스
- BASE64
- 웹보안공부
- OverTheWire
- java
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
