[CryptoHack] SYMMETRIC CIPHERS(Modes of Operation Starter, Symmetry)
2023. 5. 13. 17:54
워게임/CryptoHack
Modes of Operation Starter 문제 및 설명 이전 일련의 과제는 AES가 데이터 블록에서 키 순열을 수행하는 방법을 보여주었다. 실제로, 우리는 단일 블록보다 훨씬 더 긴 메시지를 암호화해야 한다. 작동 모드는 긴 메시지에서 AES와 같은 암호를 사용하는 방법을 설명합니다. 모든 모드는 잘못 사용하면 심각한 약점이 있습니다. 이 범주의 과제는 API와 상호 작용하고 이러한 약점을 이용할 수 있는 웹 사이트의 다른 섹션으로 이동합니다. 인터페이스를 숙지하고 다음 플래그를 사용하십시오! https://aes.cryptohack.org/block_cipher_starter/ 풀이 더보기 from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route(..
[Cryptohack] SYMMETRIC CIPHERS (CTRIME)
2023. 5. 12. 21:49
워게임/CryptoHack
CTRIME 문제 우리의 평문에는 중복되는 부분이 많을 수 있으니, 먼저 압축해보는 것은 어떨까요? https://aes.cryptohack.org/ctrime/ 풀이 더보기 from Crypto.Cipher import AES from Crypto.Util import Counter import zlib KEY = ? FLAG = ? @chal.route('/ctrime/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plaintext) iv = int.from_bytes(os.urandom(16), 'big') cipher = AES.new(KEY, AES.MODE_CTR, counter=Counter.new(128, initial_val..
[CryptoHack] SYMMETRIC CIPHERS(Bean Counter)
2023. 5. 11. 21:41
워게임/CryptoHack
Bean Counter 문제 나는 PyCrypto의 카운터 모드를 내가 원하는 것을 하기 위해 고심했고, 그래서 나는 ECB 모드에서 직접 CTR모드로 바꾸었다. 내 카운터는 암호 분석가들을 따돌리기 위해 위아래로 움직일 수 있다! 그들이 내 사진을 읽을 가능성은 없다. 풀이 더보기 from Crypto.Cipher import AES KEY = ? class StepUpCounter(object): def __init__(self, value=os.urandom(16), step_up=False): self.value = value.hex() self.step = 1 self.stup = step_up def increment(self): if self.stup: self.newIV = hex(int(..
[CryptoHack] GENERAL(XOR Starter, XOR Properties, Favourite byte, 'You either know, XOR you don't', Lemur XOR)
2023. 5. 10. 07:01
워게임/CryptoHack
XOR Starter 문제 및 설명 XOR은 비트가 같으면 0을 반환하고, 그렇지 않으면 1을 반환하는 비트 연산자입니다. 교과서에서 XOR 연산자는 ⊕로 표시되지만, 대부분의 문제와 프로그래밍 언어에서 '^'이 대신 사용되는 것을 볼 수 있습니다. 더 긴 이진수의 경우, 0110 ^1010 = 1100 비트 단위로 XOR를 수행합니다. 우리는 먼저 정수를 십진법에서 이진법으로 변환하여 정수를 XOR할 수 있다. 먼저 각 문자를 유니코드 문자를 나타내는 정수로 변환하여 문자열을 XOR할 수 있습니다. 문자열 'label'과 정수 13과 XOR 하십시오. 이러한 정수를 다시 문자열로 변환하고 플래그를 crypto{new_string}(으)로 제출하십시오. 풀이 더보기 문제에서 'label'이라는 문자열을 ..
[CryptoHack] SYMMETRIC CIPHERS(PASSWORDS AS KEYS)
2023. 5. 9. 18:42
워게임/CryptoHack
PASSWORDS AS KEYS 문제 대칭 키 알고리즘에서 키는 암호나 다른 예측 가능한 데이터 대신에, 랜덤 바이트여야 합니다. 랜덤 바이트는 암호화 보안 의사 난수 생성기(CSPRNG)를 사용하여 생성되어야 합니다. 키가 어떤 식으로든 예측 가능하면 암호의 보안 수준이 감소하고 암호문에 접근한 공격자가 암호를 해독할 수 있다. 키가 임의의 바이트로 구성된 것처럼 보인다고 해서 키가 반드시 그런 것은 아니다. 이 경우 키는 해싱 기능을 사용하는 간단한 암호에서 파생되어 암호문을 크래킹할 수 있습니다. 이 문제를 해결하기 위해 HTTP 요청을 엔드포인트에 스크립팅하거나, 암호문을 오프라인으로 공격할 수 있습니다. 행운을 빕니다. https://aes.cryptohack.org/passwords_as_ke..
[CryptoHack] SYMMETRIC CIPHERS(Flipping Cookie)
2023. 5. 8. 21:49
워게임/CryptoHack
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(ECB ORACLE)
2023. 5. 7. 19:16
워게임/CryptoHack
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(Triple DES)
2023. 5. 6. 23:14
워게임/CryptoHack
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(ECB CBC WTF)
2023. 5. 5. 23:31
워게임/CryptoHack
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: ..