분류 전체보기
-
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 -
Lazy CBC 문제 나는 게으른 개발자일이고, 내 CBC 암호화가 작동하기를 원합니다. 초기화 벡터에 대한 이 모든 이야기는 무엇인가요? 중요하게 않은 것 같아요. 풀이 더보기 먼저 제공된 사이트와 코드다. from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route('/lazy_cbc/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plaintext) if len(plaintext) % 16 != 0: return {"error": "Data length must be multiple of 16"} cipher = AES.new(KEY, AES.MODE_CBC, KEY) encrypted = c..
[CryptoHack] SYMMETRIC CIPHERS(Lazy CBC)Lazy CBC 문제 나는 게으른 개발자일이고, 내 CBC 암호화가 작동하기를 원합니다. 초기화 벡터에 대한 이 모든 이야기는 무엇인가요? 중요하게 않은 것 같아요. 풀이 더보기 먼저 제공된 사이트와 코드다. from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route('/lazy_cbc/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plaintext) if len(plaintext) % 16 != 0: return {"error": "Data length must be multiple of 16"} cipher = AES.new(KEY, AES.MODE_CBC, KEY) encrypted = c..
2023.05.04 -
JSON in JSON 문제 설명 우리는 어떻게 결함있는 검증이 JWT들의 보안을 부술 수 있는지 조사해왔지만, 때때로 코드를 악용하여 예상하지 못한 데이터에 서명할 수 있다. https://web.cryptohack.org/json-in-json/ 풀이 더보기 import json import jwt # note this is the PyJWT module, not python-jwt FLAG = ? SECRET_KEY = ? @chal.route('/json-in-json/authorise//') def authorise(token): try: decoded = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) except Exception as e: ret..
[CryptoHack] CRYPTO ON THE WEB(JSON in JSON)JSON in JSON 문제 설명 우리는 어떻게 결함있는 검증이 JWT들의 보안을 부술 수 있는지 조사해왔지만, 때때로 코드를 악용하여 예상하지 못한 데이터에 서명할 수 있다. https://web.cryptohack.org/json-in-json/ 풀이 더보기 import json import jwt # note this is the PyJWT module, not python-jwt FLAG = ? SECRET_KEY = ? @chal.route('/json-in-json/authorise//') def authorise(token): try: decoded = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) except Exception as e: ret..
2023.05.03 -
JWT Secrets 문제 및 개념 JWT에 사용되는 가장 공통적인 서명 알고리즘은 HS256 및 RS256입니다. 첫 번째 HS256은 SHA256 해시 함수가 있는 HMAC를 사용하는 대칭 서명 체계입니다. 두 번째 RS256은 RSA를 기반으로 하는 비대칭 서명 체계입니다. 인터넷에 있는 많은 안내글에서는 HS256을 사용하는 것이 더 간단하기 때문에 추천합니다. 토큰 서명에 사용된 비밀 키는 토큰을 확인하는 데 사용된 키와 동일합니다. 그러나 비밀 서명 키가 손상되면 공격자는 임의 토큰에 서명하고, 다른 사용자의 세션을 위조하여 웹앱을 완전히 손상시킬 수 있습니다. HS256은 HS256 토큰을 확인하는 모든 서버에서 키를 사용할 수 있어야 하기 때문에 비대칭 키 쌍보다 보안을 유지하기가 어렵습니..
[CryptoHack] CRYPTO ON THE WEB(JWT Secrets)JWT Secrets 문제 및 개념 JWT에 사용되는 가장 공통적인 서명 알고리즘은 HS256 및 RS256입니다. 첫 번째 HS256은 SHA256 해시 함수가 있는 HMAC를 사용하는 대칭 서명 체계입니다. 두 번째 RS256은 RSA를 기반으로 하는 비대칭 서명 체계입니다. 인터넷에 있는 많은 안내글에서는 HS256을 사용하는 것이 더 간단하기 때문에 추천합니다. 토큰 서명에 사용된 비밀 키는 토큰을 확인하는 데 사용된 키와 동일합니다. 그러나 비밀 서명 키가 손상되면 공격자는 임의 토큰에 서명하고, 다른 사용자의 세션을 위조하여 웹앱을 완전히 손상시킬 수 있습니다. HS256은 HS256 토큰을 확인하는 모든 서버에서 키를 사용할 수 있어야 하기 때문에 비대칭 키 쌍보다 보안을 유지하기가 어렵습니..
2023.05.03