728x90
반응형
1. intro
2. code 및 분석
2.1. code
N/A
2.2. 분석
이번에는 xor의 성질을 알려준다.
문제에서 알려주듯, xor은 뭐랄까... 다항식에서의 양 변의 이동 같은? 그런 아이이다.
성질 자체가 같은 경우에는 0, 다른 경우에만 1을 나타내기 때문에 이를 항상 유념해야한다.
문제에서는
KEY1
KEY2 ^ KEY1
KEY2 ^ KEY3
FLAG ^ KEY1 ^ KEY3 ^ KEY2
의 값을 주며, 이를 적절히 연산해서 flag 값을 구하면 된다.
조금 더 상세히 표현하자면
KEY1 = a
KEY2 ^ KEY1 = b
KEY2 ^ KEY3 = c
FLAG ^ KEY1 ^ KEY3 ^ KEY2 = d
로 가정하면
FLAG ^ a ^ KEY3 ^ KEY2 = d
FLAG ^ a ^ KEY3 ^ KEY2 ^ a = d ^ a
FLAG ^ KEY3 ^ KEY2 = d ^ a
가 되고, 마찬가지로
FLAG ^ c = d ^ a
FLAG ^ c ^ c = d ^ a ^ c
FLAG = d ^ a ^ c
로 표현할 수 있다.
3. exploit
a = 'a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313'
b = '37dcb292030faa90d07eec17e3b1c6d8daf94c35d4c9191a5e1e'
c = 'c1545756687e7573db23aa1c3452a098b71a7fbf0fddddde5fc1'
d = '04ee9855208a2cd59091d04767ae47963170d1660df7f56f5faf'
a = bytes.fromhex(a)
b = bytes.fromhex(b)
c = bytes.fromhex(c)
d = bytes.fromhex(d)
flag = ''
for i in range(len(a)):
flag += chr(d[i] ^ a[i] ^ c[i])
print(flag)
┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
crypto{x0r_i5_ass0c1at1v3}
728x90
반응형
'Wargame > Cryptohack' 카테고리의 다른 글
You either know, XOR you don't (0) | 2023.02.01 |
---|---|
Favourite byte (0) | 2023.01.31 |
XOR Starter (0) | 2023.01.31 |
Bytes and Big Integers (0) | 2023.01.31 |
Base64 (0) | 2023.01.31 |