워게임/CryptoHack
-
XOR Starter 문제 및 설명 XOR은 비트가 같으면 0을 반환하고, 그렇지 않으면 1을 반환하는 비트 연산자입니다. 교과서에서 XOR 연산자는 ⊕로 표시되지만, 대부분의 문제와 프로그래밍 언어에서 '^'이 대신 사용되는 것을 볼 수 있습니다. 더 긴 이진수의 경우, 0110 ^1010 = 1100 비트 단위로 XOR를 수행합니다. 우리는 먼저 정수를 십진법에서 이진법으로 변환하여 정수를 XOR할 수 있다. 먼저 각 문자를 유니코드 문자를 나타내는 정수로 변환하여 문자열을 XOR할 수 있습니다. 문자열 'label'과 정수 13과 XOR 하십시오. 이러한 정수를 다시 문자열로 변환하고 플래그를 crypto{new_string}(으)로 제출하십시오. 풀이 더보기 문제에서 'label'이라는 문자열을 ..
[CryptoHack] GENERAL(XOR Starter, XOR Properties, Favourite byte, 'You either know, XOR you don't', Lemur XOR)XOR Starter 문제 및 설명 XOR은 비트가 같으면 0을 반환하고, 그렇지 않으면 1을 반환하는 비트 연산자입니다. 교과서에서 XOR 연산자는 ⊕로 표시되지만, 대부분의 문제와 프로그래밍 언어에서 '^'이 대신 사용되는 것을 볼 수 있습니다. 더 긴 이진수의 경우, 0110 ^1010 = 1100 비트 단위로 XOR를 수행합니다. 우리는 먼저 정수를 십진법에서 이진법으로 변환하여 정수를 XOR할 수 있다. 먼저 각 문자를 유니코드 문자를 나타내는 정수로 변환하여 문자열을 XOR할 수 있습니다. 문자열 'label'과 정수 13과 XOR 하십시오. 이러한 정수를 다시 문자열로 변환하고 플래그를 crypto{new_string}(으)로 제출하십시오. 풀이 더보기 문제에서 'label'이라는 문자열을 ..
2023.05.10 -
PASSWORDS AS KEYS 문제 대칭 키 알고리즘에서 키는 암호나 다른 예측 가능한 데이터 대신에, 랜덤 바이트여야 합니다. 랜덤 바이트는 암호화 보안 의사 난수 생성기(CSPRNG)를 사용하여 생성되어야 합니다. 키가 어떤 식으로든 예측 가능하면 암호의 보안 수준이 감소하고 암호문에 접근한 공격자가 암호를 해독할 수 있다. 키가 임의의 바이트로 구성된 것처럼 보인다고 해서 키가 반드시 그런 것은 아니다. 이 경우 키는 해싱 기능을 사용하는 간단한 암호에서 파생되어 암호문을 크래킹할 수 있습니다. 이 문제를 해결하기 위해 HTTP 요청을 엔드포인트에 스크립팅하거나, 암호문을 오프라인으로 공격할 수 있습니다. 행운을 빕니다. https://aes.cryptohack.org/passwords_as_ke..
[CryptoHack] SYMMETRIC CIPHERS(PASSWORDS AS KEYS)PASSWORDS AS KEYS 문제 대칭 키 알고리즘에서 키는 암호나 다른 예측 가능한 데이터 대신에, 랜덤 바이트여야 합니다. 랜덤 바이트는 암호화 보안 의사 난수 생성기(CSPRNG)를 사용하여 생성되어야 합니다. 키가 어떤 식으로든 예측 가능하면 암호의 보안 수준이 감소하고 암호문에 접근한 공격자가 암호를 해독할 수 있다. 키가 임의의 바이트로 구성된 것처럼 보인다고 해서 키가 반드시 그런 것은 아니다. 이 경우 키는 해싱 기능을 사용하는 간단한 암호에서 파생되어 암호문을 크래킹할 수 있습니다. 이 문제를 해결하기 위해 HTTP 요청을 엔드포인트에 스크립팅하거나, 암호문을 오프라인으로 공격할 수 있습니다. 행운을 빕니다. https://aes.cryptohack.org/passwords_as_ke..
2023.05.09 -
Flipping Cookie 문제 내 웹사이트에서 쿠키를 구할 수는 있지만, 플래그값을 읽는 데는 도움이 되지 않을 거라고...생각합니다. https://aes.cryptohack.org/flipping_cookie/ 풀이 더보기 from Crypto.Cipher import AES import os from Crypto.Util.Padding import pad, unpad from datetime import datetime, timedelta KEY = ? FLAG = ? @chal.route('/flipping_cookie/check_admin///') def check_admin(cookie, iv): cookie = bytes.fromhex(cookie) iv = bytes.fromhex(iv..
[CryptoHack] SYMMETRIC CIPHERS(Flipping Cookie)Flipping Cookie 문제 내 웹사이트에서 쿠키를 구할 수는 있지만, 플래그값을 읽는 데는 도움이 되지 않을 거라고...생각합니다. https://aes.cryptohack.org/flipping_cookie/ 풀이 더보기 from Crypto.Cipher import AES import os from Crypto.Util.Padding import pad, unpad from datetime import datetime, timedelta KEY = ? FLAG = ? @chal.route('/flipping_cookie/check_admin///') def check_admin(cookie, iv): cookie = bytes.fromhex(cookie) iv = bytes.fromhex(iv..
2023.05.08 -
ECB Oracle 문제 ECB는 간단한 모드로, 각 평문 블록이 완전히 독립적으로 암호화됩니다.. 이러한 경우, 당신의 입력이 비밀 플래그 앞에 붙여지고, 암호화되고, 그게 전부입니다. 우리는 심지어 복호화 기능도 제공하지 않습니다. 아마도 "ECB 오라클"이 있을 때 패딩 오라클이 필요하지 않을까요? https://aes.cryptohack.org/ecb_oracle/ 풀이 더보기 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad KEY = ? FLAG = ? @chal.route('/ecb_oracle/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plai..
[CryptoHack] SYMMETRIC CIPHERS(ECB ORACLE)ECB Oracle 문제 ECB는 간단한 모드로, 각 평문 블록이 완전히 독립적으로 암호화됩니다.. 이러한 경우, 당신의 입력이 비밀 플래그 앞에 붙여지고, 암호화되고, 그게 전부입니다. 우리는 심지어 복호화 기능도 제공하지 않습니다. 아마도 "ECB 오라클"이 있을 때 패딩 오라클이 필요하지 않을까요? https://aes.cryptohack.org/ecb_oracle/ 풀이 더보기 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad KEY = ? FLAG = ? @chal.route('/ecb_oracle/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plai..
2023.05.07 -
Triple DES 문제 데이터 암호화 표준은 AES의 선구자였으며, 결제 카드 산업과 같은 일부 느린 분야에서 여전히 널리 사용되고 있다. 이 문제는 보안 블록 암호가 가져서는 안 되는 DES의 이상한 약점을 보여준다. 풀이 더보기 from Crypto.Cipher import DES3 from Crypto.Util.Padding import pad IV = os.urandom(8) FLAG = ? def xor(a, b): # xor 2 bytestrings, repeating the 2nd one if necessary return bytes(x ^ y for x,y in zip(a, b * (1 + len(a) // len(b)))) @chal.route('/triple_des/encrypt///..
[CryptoHack] SYMMETRIC CIPHERS(Triple DES)Triple DES 문제 데이터 암호화 표준은 AES의 선구자였으며, 결제 카드 산업과 같은 일부 느린 분야에서 여전히 널리 사용되고 있다. 이 문제는 보안 블록 암호가 가져서는 안 되는 DES의 이상한 약점을 보여준다. 풀이 더보기 from Crypto.Cipher import DES3 from Crypto.Util.Padding import pad IV = os.urandom(8) FLAG = ? def xor(a, b): # xor 2 bytestrings, repeating the 2nd one if necessary return bytes(x ^ y for x,y in zip(a, b * (1 + len(a) // len(b)))) @chal.route('/triple_des/encrypt///..
2023.05.06 -
ECB CBC WTF 문제 여기서는 CBC에서 암호화할 수 있지만 ECB에서만 암호를 해독할 수 있습니다. 그건 취약점이 될 수 없어요 왜냐면 그들은 모드가 다르니까요... 그렇죠? https://aes.cryptohack.org/ecbcbcwtf/ 풀이 더보기 from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route('/ecbcbcwtf/decrypt//') def decrypt(ciphertext): ciphertext = bytes.fromhex(ciphertext) cipher = AES.new(KEY, AES.MODE_ECB) try: decrypted = cipher.decrypt(ciphertext) except ValueError as e: ..
[CryptoHack] SYMMETRIC CIPHERS(ECB CBC WTF)ECB CBC WTF 문제 여기서는 CBC에서 암호화할 수 있지만 ECB에서만 암호를 해독할 수 있습니다. 그건 취약점이 될 수 없어요 왜냐면 그들은 모드가 다르니까요... 그렇죠? https://aes.cryptohack.org/ecbcbcwtf/ 풀이 더보기 from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route('/ecbcbcwtf/decrypt//') def decrypt(ciphertext): ciphertext = bytes.fromhex(ciphertext) cipher = AES.new(KEY, AES.MODE_ECB) try: decrypted = cipher.decrypt(ciphertext) except ValueError as e: ..
2023.05.05