Cryptohack-GENERAL

이슬·2022년 11월 9일
0

1. ENCODING


(1) ASCII

(해석)

아래 정수 배열을 사용하여 숫자를 해당 ASCII 문자로 변환하여 플래그를 얻습니다.

[99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 110, 116, 52, 98, 108, 51, 125]

Python에서 이 chr()함수는 ASCII 서수를 문자로 변환하는 데 사용할 수 있습니다( ord()함수는 반대).

Flag : crypto{ASCII_pr1nt4bl3}


(2) Hex

(해석)
아래에는 16진수 문자열로 인코딩된 플래그가 포함되어 있습니다. 플래그를 얻으려면 이것을 다시 바이트로 디코딩하십시오.

63727970746f7b596f755f77696c6c5f62655f776f726b696e675f776974685f6865785f737472696e67735f615f6c6f747d

Python에서 bytes.fromhex()함수를 사용하여 16진수를 바이트로 변환할 수 있습니다. .hex()16진수 표현을 얻기 위해 바이트 문자열에서 인스턴스 메서드를 호출할 수 있습니다 .

Flag : crypto{You_will_be_working_with_hex_strings_a_lot}


(3) Base64

(해석)

아래 16진수 문자열 을 가져와 바이트로 디코딩 한 다음 Base64 로 인코딩 합니다.

72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf

Python에서는 로 base64 모듈을 가져온 후 함수 import base64를 사용할 수 있습니다 base64.b64encode(). 챌린지 설명에 나와 있는 대로 16진수를 먼저 디코딩해야 합니다.

Flag : crypto/Base+64+Encoding+is+Web+Safe/


(4) Bytes and Big Integers

(문제 풀이 실패)

(해석)

설명:
메시지: HELLO
ASCII 바이트: [72, 69, 76, 76, 79]
16진수 바이트: [0x48, 0x45, 0x4c, 0x4c, 0x4f]
base-16: 0x48454c4c4f
base-10: 310400273

Python의 PyCryptodome 라이브러리는 메서드 bytes_to_long()및 long_to_bytes(). 먼저 PyCryptodome을 설치하고 from Crypto.Util.number import *. 자세한 내용은 FAQ 를 확인하세요 .

다음 정수를 다시 메시지로 변환합니다.

11515195063862318899931685488813747395775516287289682636499965282714637259206269

Flag : ???


(5) Encoding Challenge

(문제 풀이 실패)

(해석)

아래 첨부된 13377.py 파일은 서버에서 실행되는 소스 코드입니다. pwntools_example.py 파일 은 매우 편리한 pwntools 라이브러리를 사용하여 솔루션의 시작을 제공합니다. 우리가 추천합니다. Python의 내장 telnetlib를 사용하려는 경우 telnetlib_example.py 도 제공됩니다.

대화형 챌린지에 연결하는 방법에 대한 자세한 내용은 FAQ 를 참조하세요 . 코딩 도전을 할 기분이 아니라면 암호화로 건너뛰어도 됩니다!

연결 시간 nc socket.cryptohack.org 13377

챌린지 파일:
13377.py
pwntools_example.py
telnetlib_example.py

Flag : ???


2. XOR


1. XOR Starter

(해석)

더 긴 이진수의 경우 비트 단위로 XOR 0110 ^ 1010 = 1100합니다. 먼저 정수를 십진수에서 이진수로 변환하여 정수를 XOR할 수 있습니다. 먼저 각 문자를 유니코드 문자를 나타내는 정수로 변환하여 문자열을 XOR할 수 있습니다.

문자열이 주어지면 "label"각 문자를 정수와 XOR합니다 13. 이 정수를 다시 문자열로 변환하고 플래그를 crypto{new_string}.

Python 라이브러리에는 다양한 유형과 길이의 데이터를 함께 XOR할 수 pwntools있는 편리한 기능이 있습니다. xor()그러나 먼저 이 문제를 해결하기 위해 고유한 기능을 구현하고 싶을 수 있습니다.

각 문자의 정수 값과 13 사이에서 xor를 수행한다.

Flag : crypto{aloha}


2. XOR Properties

(해석)

가환: A ⊕ B = B ⊕ A
연관: A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C 항등식
: A ⊕ 0 = A
자기 역함수: A ⊕ A = 0

가환성은 XOR 연산의 순서가 중요하지 않음을 의미합니다. 연관은 순서 없이 일련의 작업을 수행할 수 있음을 의미합니다(대괄호에 대해 걱정할 필요가 없음). 아이덴티티는 0이므로 0인 XOR은 "아무것도 하지 않습니다", 마지막으로 자신과 XOR한 결과는 0을 반환합니다.

이것을 실제로 사용해 봅시다! 아래는 3개의 임의 키가 플래그와 함께 XOR된 일련의 출력입니다. 위의 속성을 사용하여 플래그를 얻기 위해 마지막 줄에서 암호화를 취소합니다.

KEY1 = a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313
KEY2 ^ KEY1 = 37dcb292030faa90d07eec17e3b1c6d8daf94c35d4c9191a5e1e
KEY2 ^ KEY3 = c1545756687e7573db23aa1c3452a098b71a7fbf0fddddde5fc1
FLAG ^ KEY1 ^ KEY3 ^ KEY2 = 04ee9855208a2cd59091d04767ae47963170d1660df7f56f5faf

이러한 객체를 XOR하기 전에 16진수에서 바이트로 디코딩해야 합니다.

적용 가능한 속성은 교환 속성이다. KEY1에서 KEY2를 가져오도록하고 나머지 KEY에 대해 동일한 작업을 수행한다. 마지막으로 플래그를 16진수 형식으로 가져오고 디코딩하면 Flag를 얻을 수 있다.

Flag : crypto{x0r_i5_ass0c1at1v3}


3. Favourite byte

(해석)

단일 바이트로 XOR을 사용하여 일부 데이터를 숨겼지만 해당 바이트는 비밀입니다. 먼저 16진수부터 디코딩하는 것을 잊지 마십시오.

73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d

이것은 단일 바이트 XOR 암호이다. 가능한 모든 바이트를 반복해 Flag를 얻는다.

Flag : crypto{0x10_15_my_f4v0ur173_by7e}


4. You either know, XOR you don't

(문제 풀이 실패)

(해석)

나는 내 비밀 키로 플래그를 암호화했고, 당신은 그것을 추측할 수 없을 것입니다.

플래그 형식과 이 챌린지에서 어떻게 도움이 될 수 있는지 기억하십시오!

0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104

XOR 암호이고, 가장 먼저 시도할 수 있는 것은 FLAG의 처음 7개 문자 "crypto{"와 암호문이다.

Flag : ???


5. Lemur XOR

XOR로 두 개의 멋진 이미지를 동일한 비밀 키로 숨겨서 볼 수 없습니다!

챌린지 파일:
lemur.png
flag.png

xor 대신에 추가나 빼기를 해주면 된다.

Flag : crypto{X0Rly_n0t!}

profile
Cybersecurity

0개의 댓글