0Pricing
Cyber Security Academy · 강의

웹 및 암호화 과제

일반적인 웹 및 암호화 퍼즐을 해결합니다.

웹 및 암호화 과제은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

웹과 암호라는 두 기둥

웹과 암호는 CTF를 시작할 때 가장 흔히 선택하는 두 분야입니다.

  • 웹 문제에서는 실행 중인 웹 애플리케이션이 제공되며, 애플리케이션이 입력, 인증 또는 신뢰를 처리하는 방식의 결함을 찾으라는 과제가 주어집니다.
  • 암호 문제에서는 암호문, 암호 방식, 때로는 소스 코드가 제공되며, 암호화가 사용된 방식의 결함을 공격하여 평문이나 키를 찾아내라는 과제가 주어집니다.

두 분야 모두 체계적인 관찰을 요구합니다. 이 수업에서는 각 분야에서 반복해서 등장하는 문제를 다룹니다.

웹 대상에서의 첫 단계

무엇이든 공격하기 전에 애플리케이션의 구조를 파악하십시오. 소스 코드를 확인하고 응답을 검사하며 숨겨진 콘텐츠를 탐색하십시오.

# Inspect raw response headers and body
curl -i http://target/

# Look for hidden paths the UI does not link to
gobuster dir -u http://target/ -w wordlist.txt

# Common files worth checking by hand
# /robots.txt  /.git/  /backup.zip  /admin

SQL 삽입

SQL 삽입은 사용자 입력을 데이터베이스 질의에 이어 붙이면서 코드와 데이터를 분리하지 않을 때 발생합니다.

SELECT * FROM users WHERE name='INPUT'과 같은 질의를 구성하는 로그인 기능은 문자열을 닫고 논리를 변경하는 입력으로 우회할 수 있습니다:

# A classic auth-bypass payload supplied as the username
' OR '1'='1' -- 

# UNION-based extraction once the column count is known
' UNION SELECT username, password FROM users -- 

삽입의 올바른 해결책

CTF에서는 삽입 공격을 돌파하는 방법을 배워 이를 방어할 수 있습니다. 올바른 방어 방법은 매개변수화된 질의(준비된 문)이며, 이를 사용하면 사용자 데이터가 질의 구조에 전혀 들어가지 않습니다.

# Vulnerable: input becomes part of the SQL text
query = "SELECT * FROM users WHERE name='" + name + "'"

# Safe: input is bound as a parameter, never parsed as SQL
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

사이트 간 스크립팅(XSS)

XSS는 애플리케이션이 공격자가 제어하는 입력을 반사하거나 저장하고 브라우저가 이를 스크립트로 실행할 때 발생합니다. CTF에서 XSS 문제는 쿠키에 플래그를 가진 봇이 여러분의 페이로드를 방문하는 방식으로 출제되는 경우가 많습니다.

  • 반사형 — 요청에 포함된 페이로드가 그대로 되돌아옵니다.
  • 저장형 — 페이로드가 저장되어 이후 방문자에게 실행됩니다.
  • DOM 기반 — 클라이언트 측 JavaScript가 입력을 안전하지 않게 페이지에 기록합니다.

방어 방법은 상황에 맞는 출력 인코딩과 콘텐츠 보안 정책을 함께 사용하는 것입니다. <script>alert(1)</script>와 같은 테스트용 확인 문자열로 입력이 이스케이프되는지 확인할 수 있습니다.

SSRF와 경로 순회

웹에서 자주 등장하는 두 가지 기법이 더 있습니다:

  • 서버 측 요청 위조(SSRF) — 서버가 사용자를 대신하여 요청을 보내도록 속이는 기법입니다. 플래그에 접근하기 위해 http://127.0.0.1과 같은 내부 전용 주소나 클라우드 메타데이터 엔드포인트를 대상으로 하는 경우가 많습니다.
  • 경로 순회 — ../과 같은 시퀀스로 지정된 디렉터리를 벗어나 웹 루트 외부의 파일을 읽는 기법입니다. 예를 들면 ../../../../etc/passwd와 같습니다.

두 기법 모두 리소스 선택을 사용자 입력에 맡기는 데서 비롯됩니다. 방어 방법은 엄격한 허용 목록을 사용하고, 경로를 사용하기 전에 정규화한 다음 검증하는 것입니다.

인코딩은 암호화가 아닙니다

초보자가 가장 흔히 빠지는 암호 관련 함정은 인코딩과 암호화를 혼동하는 것입니다. 인코딩은 키 없이도 누구나 되돌릴 수 있으므로 기밀성을 전혀 제공하지 않습니다.

다음 형식은 한눈에 알아볼 수 있도록 익혀 두십시오:

  • Base64 — 문자와 숫자, + /를 사용하며 = 패딩이 붙는 경우가 많습니다.
  • 16진수 — 0-9 a-f만 사용합니다.
  • ROT13 / 카이사르 암호 — 읽을 수 있는 구조를 유지하면서 문자가 이동합니다.
# Decode base64
echo 'ZmxhZ3toZWxsb30=' | base64 -d

# Decode hex
echo '666c6167' | xxd -r -p

고전 암호와 XOR 암호

많은 암호 문제는 취약한 역사적 암호나 부주의하게 만든 현대 암호를 사용합니다:

  • 카이사르 / 비제네르 — 빈도 분석이나 25가지 이동을 모두 시도하면 해독할 수 있는 이동 암호입니다.
  • 단일 바이트 XOR — 전체 메시지를 하나의 바이트로 XOR한 것입니다. 256개의 키를 모두 무차별 대입한 다음 읽을 수 있는 결과를 고릅니다.
  • 반복 키 XOR — 키 길이를 찾은 다음 각 키 바이트를 단일 바이트 XOR 문제로 풀어 해독합니다.

교훈은 다음과 같습니다. 사용자 정의 암호나 고전 암호는 분석가를 상대로 실질적인 보안을 제공하지 못합니다.

RSA의 함정

RSA는 매개변수를 올바르게 선택했을 때만 안전합니다. CTF 암호 문제에서는 결함이 있는 인스턴스를 자주 제공합니다:

  • 작은 모듈러스 — n이 충분히 작다면 직접 소인수 분해하여 개인 키를 복구할 수 있습니다.
  • 매우 작은 지수, 패딩 없음 — e=3이고 메시지가 짧으면 암호문이 완전 세제곱일 수 있으며, 정수 세제곱근을 구해 복구할 수 있습니다.
  • 공유 소인수 — 두 공개 키가 하나의 소수를 공유하면 모듈러스의 최대공약수로 그 소수를 즉시 알아낼 수 있습니다.

실제 환경에서의 방어 방법은 검증된 라이브러리와 큰 키, 적절한 패딩(OAEP)을 사용하고 직접 암호를 만들지 않는 것입니다.

해시 크래킹

문제에서 비밀번호 해시를 제공하면 목표는 원래 입력값을 복구하는 것입니다. 해시를 되돌릴 수는 없지만, 입력값을 추측하여 비교할 수는 있습니다.

# Identify the hash type first
hashid 5f4dcc3b5aa765d61d8327deb882cf99

# Dictionary attack with hashcat (mode 0 = raw MD5)
hashcat -m 0 hash.txt rockyou.txt

# John the Ripper alternative
john --wordlist=rockyou.txt hash.txt

반복 가능한 작업 흐름

두 범주 모두에 일관된 순환 절차를 적용하십시오:

  • 관찰 — 문제 설명을 읽고, 소스를 확인하며, 인코딩이나 방식을 파악합니다.
  • 가설 수립 — 가능성이 높은 취약점 유형을 추정합니다.
  • 작게 테스트 — 탐색용 페이로드 하나를 보내고, 정확한 응답을 살펴봅니다.
  • 공격 — 작동하는 탐색을 플래그를 반환하는 완전한 페이로드로 확장합니다.
  • 기록 — 기억이 생생할 때 페이로드와 추론 과정을 기록합니다.

이 순환 절차를 따르면 엉뚱한 길에 빠지지 않고 거의 힘들이지 않으면서 풀이 문서를 작성할 수 있습니다.

빠른 확인

웹과 암호학의 기본기를 테스트해 보십시오.

복습

반복해서 등장하는 웹 및 암호학 문제를 다루었습니다:

  • 웹: 먼저 구조를 파악한 다음 SQL 인젝션, XSS, SSRF, 경로 탐색을 탐색합니다. 각각은 사용자 입력을 안전하지 않게 신뢰하는 데서 비롯되며, 각각 코드와 데이터를 분리하여 해결합니다.
  • 암호학: 인코딩과 암호화를 구분하고, 취약한 고전 암호와 XOR 암호를 해독하며, RSA 매개변수의 실수를 악용하고, 단어 목록으로 해시를 크래킹합니다.
  • 하나의 관찰, 가설 수립, 테스트, 공격, 기록 순환 절차를 두 범주 모두에 적용할 수 있습니다.

다음에는 리버스 엔지니어링과 바이너리 익스플로잇을 학습합니다.

자주 묻는 질문

“웹 및 암호화 과제” 강의는 무료인가요?

네 — “웹 및 암호화 과제” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“웹 및 암호화 과제”에서 뭘 배우나요?

일반적인 웹 및 암호화 퍼즐을 해결합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“웹 및 암호화 과제” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. CTF 범주와 사고방식
  2. 웹 및 암호화 과제
  3. 리버싱과 Pwn 기초
  4. 도구와 풀이 문서
← Cyber Security Academy(으)로 돌아가기