Flying Chars목차문제풀이 과정결과문제문자가 날아다닌다는데, 웹 사이트를 확인해볼 경우웹사이트에 단어가 미친듯이 움직이는것을 확인할 수 있습니다.그래서 움직이지 않게 하거나,이미지를 하나하나 확인해보면 될것 같다는 생각을 했습니다.풀이과정웹사이트의 이미지 파일을 확인해볼 경우 단어들을 확인할 수 있습니다.이제 순서만 확인하면 되는데, 순서를 확인하는것은 어려운일이 아니다.이 웹사이트의 코드를 확인해볼 경우 const img_files = ["/static/images/10.png", "/static/images/17.png", "/static/images/13.png", "/static/images/7.png","/static/images/16.png", "/static/images/8.pn..
XSS Filtering BypassXSS Filtering ByPass문제 설명문제 풀이문제 요약문제 설명- 3개의 페이지와 각 페이지의 기능vuln(xss)page단순하게 이미지를 출력하는 페이지로 보입니다. 또한 GET방식을 사용하는것을 보아, param저 변수가 취약한 파라미터가 될 수 있을것이라고 생각됩니다. memomemo를 출력하는 페이지로 보입니다.이것 또한GET방식을 사용하는것을 보아 시도해보는것도 좋을거 같습니다. flag입력한값에 제출하면 저 url대로 동작하는것이라고 생각합니다. POST 방식을 사용합니다. app.py 코드의 주요 함수 확인 def check_xss(param, cookie={"name": "name", "value": "value"}): url = f"htt..
Armory 문제(및 설명) Shamir의 스키마를 개선하여 결정론적으로 파생된 공유를 사용했습니다. 비트코인 개인 키 및 기타 비밀 데이터 저장에 좋습니다. 당신은 첫 번째 공유만 가지고 있고 플래그를 해제하기 위해 3개가 필요하기 때문에 어떤 가능성도 없습니다. 풀이 더보기 #!/usr/bin/env python3 import hashlib FLAG = b"crypto{???????????????????????}" PRIME = 77793805322526801978326005188088213205424384389488111175220421173086192558047 def _eval_at(poly, x, prime): accum = 0 for coeff in reversed(poly): accum *..
ROT128 목차 문제 설명 해결 과정 Exploit 코드 문제 요약 문제 설명 -ROT128의 문제 설명 암호화된 encfile을 복호화 하여 flag.png를 취득하는 문제입니다. 해결과정 #!/usr/bin/env python3 hex_list = [(hex(i)[2:].zfill(2).upper()) for i in range(256)] # 0부터 256까지 16진수로된 리스트 생성 with open('flag.png', 'rb') as f: # flag.png 파일을 읽어옴 plain_s = f.read() plain_list = [hex(i)[2:].zfill(2).upper() for i in plain_s] #읽은 데이터를 16진수로된 리스트 생성 enc_list = list(range(l..
Bit by Bit 문제(및 설명) 당신이 ElGamal에 대해 들었는데, 이것은 몇 가지 멋진 특성을 가지고 있다고 들었습니다. 저는 모든 비트를 다른 비밀로 암호화했으므로 당신은 제 플래그값을 복구할 수 못합니다. 풀이 더보기 from Crypto.Random import random from Crypto.Util.number import getPrime, bytes_to_long FLAG = b'crypto{??????????????????????????????????????????}' def get_padding(): seed = 256 e = random.randint(2, q) padding = pow(seed, e, q) return padding def public_key(): x = ra..
Find the Lattice 문제(및 설명) 보안 시스템에 대한 트랩도어 함수를 형성할 수 있는 어려운 문제를 포함하는 것으로 알려진 격자(lattices)를 살펴보았습니다. 또한, 암호 해독(cryptanalysis)에서는 격자가 격자와 관련이 없는 것처럼 보이는 암호 프로토콜을 깰 수 있습니다. 이 도전 과제는 플래그를 암호화하기 위해 모듈러 산술을 사용하지만, 프로토콜 내에는 2차원 격자가 숨겨져 있습니다. 이 도전에 시간을 투자하고 어떻게 격자를 사용하여 이를 깰 수 있는지 찾는 것을 강력히 권장합니다. 이것은 많은 자료가 있는 유명한 예제이지만, 시스템 내에서 격자를 찾아내는 것이 종종 깨는 핵심이 됩니다. 힌트로는 이 도전을 이전 도전에서 다룬 가우스 소거법(Gaussian reduction..
문제 What version of Apache is running on the target's port 80? $ sudo nmap -sV -p -T5 --open 10.129.95.192 tarting Nmap 7.93 ( https://nmap.org ) at 2023-12-14 23:35 GMT Nmap scan report for 10.129.95.192 Host is up (0.25s latency). Not shown: 65532 filtered tcp ports (no-response) Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE VERSION 22/tcp open s..
문제 What service is running on the target machine over UDP? $ sudo nmap -sU -p- -T5 --open nmap 옵션 설명 -sU: UDP 스캔을 수행하는 옵션. 이는 대상 시스템의 UDP 포트를 탐색합니다. -p-: 모든 포트(1부터 65535까지)를 스캔하겠다는 옵션. 이는 가능한 모든 포트를 대상으로 스캔합니다 -T5: 스캔 타이밍을 설정하는 옵션. 0부터 5까지 설정할 수 있으며, 숫자가 높을수록 스캔 속도가 빨라지지만, 네트워크 부하와 탐지 가능성이 증가합니다. --open: 열려 있는 포트만 결과에 표시하라는 옵션. 이는 스캔 결과에서 열려 있는 포트만 보여줍니다. 정답: TFTP What class of vulnerability is ..
[dreamhack] rev-basic-8 문제 풀이 목차 문제 설명 해결 과정 Exploit 코드 문제 요약 문제 설명 - rev-basic-8번의 문제설명 이 문제 설명에 의해서 단순히 문자열 값을 입력받아 문자열이 맞았는지 판별하여 correct, wrong을 출력하는 프로그램입니다. 해결 과정 - x64dbg를 이용해 동적분석 후 FLAG값을 취득하는 과정 동작 방식 확인하기 이 함수는 사용자에게 Input값을 입력받아 chall8.7FF73713100 함수에서 값에서 FLAG인지 아닌지 판별해 eax에 값을 가져와서 0인지 아닌지를 통해 Correct, Wrong을 출력하는 함수임을 보아 메인함수로 추측해 볼 수 있다 이함수는 rax의 값이 21인지 확인한후 n번째 문자열과 0xFB를 곱해서 0..
Gram Schmidt 문제(및 설명) 지난 문제(Size and Basis)에서 우리는 직교 기저(orthogonal basis)라고 하는 특별한 종류의 기저가 있다는 것을 보았습니다. 어떤 벡터 공간 V에 대한 기저 v1, v2, ..., vn이 주어졌을 때, 그램-슈미트(Gram-Schmidt) 알고리즘은 벡터 공간 V에 속하는 직교 기저 u1, u2, ..., un을 계산합니다. 제프리 홉스타인, 질 파이퍼, 조셉 H. 실버먼의 '수학적 암호학 입문' 책에서 그램-슈미트 알고리즘은 다음과 같이 주어집니다: 그램-슈미트 알고리즘 u1 = v1 반복 i = 2,3,...,n μij = vi ∙ uj / ||uj||^2, 1 ≤ j
Vectors 문제(및 설명) 먼저 격자를 정의하거나 암호학에서 격자가 어떻게 나타나는지에 대해 이야기하기 전에, 선형 대수의 기본 사항을 살펴보겠습니다. 다음 도전 과제들은 복습으로 간주되어야 하며, 만약 이것이 완전히 처음이라면 약간의 백그라운드 독서가 필요할 수 있습니다. 여전히 우리는 "수학적 암호학 입문" (Hoffstein, Pipher, Silverman) 및 격자 및 그 응용에 대한 이 훌륭한 소개를 추천합니다. 벡터 공간 V는 필드 F 위에서 정의된 집합으로, 두 개의 이항 연산자로 구성됩니다. 벡터 v ∈ V 및 스칼라 a ∈ F에 대해, 벡터 합은 두 개의 벡터를 가져와서 다른 벡터를 생성합니다: v + w = z, 여기서 v, w, z ∈ V 및 스칼라 곱은 벡터와 스칼라를 가져와서..
Question What TCP ports does nmap identify as open? Answer with a list of ports seperated by commas with no spaces, from low to high. 번역: nmap이 열려있다고 식별하는 TCP 포트는 무엇인가요? 쉼표로 구분하고 공백 없이 낮은 순서에서 높은 순서로 포트 목록을 답변하세요. 상세 풀이 정답 22, 80 What software is running the service listening on the http/web port identified in the first question? 번역: 첫 번째 질문에서 식별된 http/web 포트에서 수신 대기 중인 서비스를 운영하는 소프트웨어는 무엇인가요? 상..
Question Which service version is found ro be running on port 80? 번역: 포트 80에서 실행되고 있는 서비스 버전은 무엇인가요? 상세 풀이 정답 nginx 1.14.2 What is the 3-digit HTTP status code returned when you visit http://{machine IP}/? 번역: http://{machine IP}/를 방문했을 때 반환되는 3자리 HTTP 상태 코드는 무엇인가요? 상세 풀이 IP 주소로 요청 시 302 상태코드가 발생하면서 Location 해더의 주소로 리다이렉트가 된 것을 확인 해당 Location 해더의 주소는 DNS에 저장이 되어 있지 않기 때문에 /etc/hosts 파일에 지정한다. /e..
Question How many TCP ports are open? 번역: 열린 TCP 포트는 몇 개인가요? 상세 풀이 정답: 2 What is the domain of the email address provided in the "Contact" section of the website? 번역: 웹사이트의 'Contact' 섹션에 제공된 이메일 주소의 도메인은 무엇인가요? 상세 풀이 정답: thetoppers.htb In the absence of a DNS server, which Linux file can we use to resolve hostnames to IP addresses in order to be able to access the websites that point to those ho..
Gotta Go Fast 문제 저는 엔트로피가 고갈되는 것을 걱정할 필요가 없을 거에요. 이 새로운 스크립트로 영원히 OTP를 생성할 거예요! 풀이 더보기 더보기 #!/usr/bin/env python3 import time from Crypto.Util.number import long_to_bytes import hashlib from utils import listener FLAG = b'crypto{????????????????????}' def generate_key(): current_time = int(time.time()) key = long_to_bytes(current_time) return hashlib.sha256(key).digest() def encrypt(b): key = ge..
Collider 문제 입자 물리학에 관한 내 문서 시스템을 확인해보세요. 각 문서는 해시로 고유하게 참조됩니다. nc socket.cryptohack.org 13389 으로 접속하세요. 풀이 더보기 import hashlib from utils import listener FLAG = "crypto{???????????????????????????????????}" class Challenge(): def __init__(self): self.before_input = "Give me a document to store\n" self.documents = { "508dcc4dbe9113b15a1f971639b335bd": b"Particle physics (also known as high energy ..
Script Kiddie 문제 저는 Github에서 이 멋진 스크립트를 찾았고, 학교 Wi-Fi를 돌면서 듣고 있는 누구에게도 내 비밀을 지키기 위해 사용하고 있습니다! 풀이 더보기 from Crypto.Cipher import AES import hashlib import secrets def header(): print(""" _____ _ __ __ _ | __ \(_)/ _|/ _(_) | | | |_| |_| |_ _ ___ | | | | | _| _| |/ _ \ | |__| | | | | | | | __/ |_____/|_|_| |_| |_|\___| | | | | | | | | |__| | ___| | |_ __ ___ __ _ _ __ | __ |/ _ \ | | '_ ` _ \ / _`..
When visiting the web service using the IP address, what is the domain that we are being redirected to? 번역: IP 주소를 사용하여 웹 서비스를 방문할 때, 우리가 어떤 도메인으로 리디렉션되나요? 상세 풀이 정답 unika.htb Which scripting language is being used on the server to generate webpages? 번역: 서버에서 웹페이지를 생성하는 데 사용되는 스크립팅 언어는 무엇인가요? 상세 풀이 정답 PHP What is the name of the URL parameter which is used to load different language versions of t..
What Nmap scanning switch employs the use of default scripts during a scan? 번역: Nmap 스캔 중 기본 스크립트를 사용하는 스캔 스위치는 무엇인가요? 상세 풀이 Nmap 스캔 중 기본 스크립트를 사용하려면 -sC 스위치를 사용합니다. 이 스위치는 Nmap 스크립팅 엔진(NSE)을 활용하여 기본적인 스크립트 집합을 실행합니다. 이 스크립트들은 서버의 보안 취약점, 버전 정보, 서비스 구성 등을 확인하는 데 도움이 됩니다. 예를 들어, Nmap 스캔에서 기본 스크립트를 사용하려면 다음과 같이 명령어를 작성할 수 있습니다. nmap -sC -p 80 example.com 이 명령어는 example.com 도메인의 80번 포트에 대해 기본 스크립트를..
Diffie-Hellman Starter 3 문제 및 설명 디피-헬만 프로토콜은 이산 로그가 주어진 그룹에 대해 "어려운" 계산으로 가정되기 때문에 사용됩니다. 프로토콜의 첫 번째 단계는 소수 p와 유한체의 생성자 g를 설정하는 것입니다. 이러한 값은 특정한 경우에 이산 로그를 효율적인 알고리즘으로 해결할 수 있는 상황을 피하기 위해 신중하게 선택되어야 합니다. 예를 들어, p = 2*q +1과 같은 안전한 소수를 일반적으로 선택합니다. 여기서 p - 1의 인수는 {2,q}로, q는 다른 큰 소수입니다. 이렇게 함으로써 디피-헬만 프로토콜을 포홀리그-헬만 알고리즘으로부터 보호할 수 있습니다. 사용자는 그런 다음 비밀 정수 a < p를 선택하고 g^a mod p를 계산합니다. 이 값은 보안이 취약한 네트워..
개요 당신은 최근 한 랜섬웨어 갱단 조직원의 보스로 의심되는 "ELMO"를 조사하기 위해 "K204" 라는 코드네임으로 정보 수집 작전에 투입되었습니다. ELMO와 그의 조직원들은 K204가 그와 조직을 추적하고 있는지 모르는 상태입니다. 현재 K204는 여러 정보수집 기술을 통해 ELMO의 소재지와 조직원의 근거지, 다음 그들의 타겟 플랜등을 파악해야합니다. 현재 K204가 가지고 있는 정보는 다음과 같습니다: 그루트 조직원은 새로운 램섬웨어 바이러스인 toorgvirus 랜섬웨어를 유포중이며 파일을 암호화 한뒤 아래와 같은 Ransomware Note를 남겼습니다. K204는 toorgvirus 랜섬웨어 피해자들을 통해 Ransom Note를 입수하였습니다. 랜섬노트는 아래와 같습니다: 문제들을 통해..
Diffie-Hellman Starter 1 문제 및 설명 정수 모듈로 n으로 이루어진 집합은 덧셈과 곱셈의 연산을 포함하여 링(Ring)이 됩니다. 이는 집합 내의 두 요소를 더하거나 곱하는 경우에도 집합 내의 다른 요소가 반환된다는 것을 의미합니다. 모듈러스가 소수일 때: n = p인 경우, 우리는 집합 내의 모든 요소에 대한 역원을 보장받으며, 이로 인해 링은 필드(Field)로 승격됩니다. 이 필드를 유한체 Fp라고 합니다. Diffie-Hellman 프로토콜은 일반적으로 큰 소수인 유한체 Fp의 요소들로 작동합니다. 소수 p = 991과 요소 g = 209가 주어진 경우, g * d mod 991 = 1을 만족하는 역원 d를 찾아보겠습니다. 풀이 더보기 g * d mod 991 = 1에 대한 역..
Adrien's Signs 문제 Adrien은 심볼과 마이너스 기호를 이용하여 메시지를 암호화하는 방법을 고려하고 있습니다. 플래그를 복구하는 방법을 찾을 수 있을까요? 풀이 더보기 from random import randint a = 288260533169915 p = 1007621497415251 FLAG = b'crypto{????????????????????}' def encrypt_flag(flag): ciphertext = [] plaintext = ''.join([bin(i)[2:].zfill(8) for i in flag]) for b in plaintext: e = randint(1, p) n = pow(a, e, p) if b == '1': ciphertext.append(n) els..
Modular Square Root 문제 및 설명 르장드르의 기호를 소개하면서, 소수에 대해 모듈로를 사용하여 제곱근이 있는지를 빠르게 판별하는 방법을 알아보았습니다. 더 나아가서, 이러한 제곱근을 효율적으로 계산하기 위한 알고리즘도 있습니다. 실제로 가장 좋은 알고리즘은 Tonelli-Shanks라고 불리며, 이는 19세기에 이탈리아인에 의해 처음으로 기술되었으며, 1970년대에 Daniel Shanks에 의해 독립적으로 재발견되었습니다. 2가 아닌 모든 소수는 p ≡ 1 mod 4 또는 p ≡ 3 mod 4 형태입니다. 왜냐하면 모든 홀수는 이러한 합동식을 따르기 때문입니다. 이전의 도전에서 암시한 대로, p ≡ 3 mod 4 경우에는 페르마의 소정리로부터 직접적으로 계산 가능한 매우 간단한 공식을 ..
Comment