[CryptoHack] MISC(Armory)
2024. 3. 31. 21:20
워게임/CryptoHack
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 *..
[dreamhack] ROT128 문제풀이
2024. 1. 31. 23:02
워게임/dreamhack
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..
[CryptoHack] MISC(Bit by Bit)
2024. 1. 31. 22:44
워게임/CryptoHack
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..
[CryptoHack] MATHMATICS(Find the Lattice)
2023. 12. 31. 16:09
워게임/CryptoHack
Find the Lattice 문제(및 설명) 보안 시스템에 대한 트랩도어 함수를 형성할 수 있는 어려운 문제를 포함하는 것으로 알려진 격자(lattices)를 살펴보았습니다. 또한, 암호 해독(cryptanalysis)에서는 격자가 격자와 관련이 없는 것처럼 보이는 암호 프로토콜을 깰 수 있습니다. 이 도전 과제는 플래그를 암호화하기 위해 모듈러 산술을 사용하지만, 프로토콜 내에는 2차원 격자가 숨겨져 있습니다. 이 도전에 시간을 투자하고 어떻게 격자를 사용하여 이를 깰 수 있는지 찾는 것을 강력히 권장합니다. 이것은 많은 자료가 있는 유명한 예제이지만, 시스템 내에서 격자를 찾아내는 것이 종종 깨는 핵심이 됩니다. 힌트로는 이 도전을 이전 도전에서 다룬 가우스 소거법(Gaussian reduction..
[Starting Point] TIER 1 - Markup
2023. 12. 30. 23:38
워게임/Hack The Box
문제 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..
[Starting Point] TIER 1 - Included
2023. 12. 30. 23:16
워게임/Hack The Box
문제 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 문제풀이
2023. 12. 26. 20:58
워게임/dreamhack
[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..
[CryptoHack] MATHMATICS(Gram Shcmidt)
2023. 10. 31. 18:58
워게임/CryptoHack
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
[CryptoHack] MATHMATICS(Vectors)
2023. 8. 31. 22:50
워게임/CryptoHack
Vectors 문제(및 설명) 먼저 격자를 정의하거나 암호학에서 격자가 어떻게 나타나는지에 대해 이야기하기 전에, 선형 대수의 기본 사항을 살펴보겠습니다. 다음 도전 과제들은 복습으로 간주되어야 하며, 만약 이것이 완전히 처음이라면 약간의 백그라운드 독서가 필요할 수 있습니다. 여전히 우리는 "수학적 암호학 입문" (Hoffstein, Pipher, Silverman) 및 격자 및 그 응용에 대한 이 훌륭한 소개를 추천합니다. 벡터 공간 V는 필드 F 위에서 정의된 집합으로, 두 개의 이항 연산자로 구성됩니다. 벡터 v ∈ V 및 스칼라 a ∈ F에 대해, 벡터 합은 두 개의 벡터를 가져와서 다른 벡터를 생성합니다: v + w = z, 여기서 v, w, z ∈ V 및 스칼라 곱은 벡터와 스칼라를 가져와서..