반응형

암호 78

[Root Me] Known plaintext - XOR - 암호학 / HxD

Root Me에서 제공하는 xor 관련 암호학 문제 제목이 Known plaintext 인데 Known plaintext란 한글로 기지평문(공격)으로 공격자가 어떤 암호문과 그에 대한 평문을 알고 있을때 해독하는 방법이다. 문제에서는 ch3.bmp 파일이 주어진다. 파일이 깨진듯 내용은 보이지 않는다. HxD로 파일을 열어보면 맨 앞부분이 24 2C로 시작하는 것을 볼 수 있다. BMP 파일은 기본적으로 42 4D로 시작되어야 한다. 문제 제목이 XOR이니 어떤 키값으로 XOR 되어서 파일 시그니처가 변했고, 그에 따라 윈도우에서 BMP 파일을 인식하지 못하는 것이다. 파일 시그니처로 알고있는 42 4D 가 바로 평문을 알고있는 것이다. CyberChef(https://gchq.github.io/Cybe..

워게임/Root Me 2023.08.19

[2021CCE] rox - 암호학 / XOR

2021CCE에 출제된 암호학 문제 이번 문제에서도 역시 기초에 대해 언급한다. 이렇게 기초를 좋아했던 CCE인데 2022년 부턴 대회 난이도가 엄청나게 올라가서 좀 아이러니하다. 문제 제목부터 딱 봐도 XOR과 관련된 문제이다. 같이 제공된 압축파일의 압축을 풀면 Bg0PXUlMTx46AgYKIRcWMR4HHCENDAMaAxwNCjoBBAomPRELCRgODQ1fGA== 이런 암호문이 주어진다. key="???????" flag="cce2021{??????????????????????????????????}" def encrypt(plain): res="" for _ in range(len(plain)): res+=chr(ord(key[_%7])^ord(plain[_])) return res open(..

CTF/암호학 2023.08.17

[Root Me] Shift cipher - 암호학 / Python

Root Me에서 제공하는 암호학 문제 약간의 코딩이 필요하다. 문제에서 주어지는 것은 ch7.bin 파일이다. 해당 파일을 HxD로 열어봤더니 내용에 일반적이지 않은 문자들까지 섞여있는것을 확인했다. Shift cipher 이고 쉬운 난이도의 문제라 단순한 카이사르 암호나 rot 로 풀수 있을줄 알았는데 그렇지 않았다. text = open('ch7.bin','rb').read() i = 0 while i < 20: print(''.join([chr(c - i) for c in text])) i += 1 문제푸는 코드는 아주 단순하게 작성할 수 있다. ch7.bin 파일을 rb 로 읽어서 각 문자열에 조금씩 값을 늘려가며 빼주는 것이다. 테스트 삼아 i 를 20 미만으로 작성해서 돌려봤는데 금방 플래그..

워게임/Root Me 2023.08.14

[CTFlearn] Polycrypto - 암호학 / Python

CTFlearn에서 제공하는 Hard 난이도의 암호학 문제 다항식을 이용한 문제이다. 문제 파일이 제공되는 주소와 위키피디아 주소가 같이 적혀있다. 먼저 문제파일을 다운받아 열어보면 이런 내용이 적혀있다. 엄청나게 긴 다항식이 적혀있는게 보인다. 다음으로 위키피디아에 들어가보면 이런 내용이 적혀있다. 다항식을 binary로 표현하는 방법에 대해 안내한다. 영어랑 수식은 복잡해서 자세히 안읽었고 밑줄친 부분만으로도 충분히 풀 수 있을거 같아 바로 해보기로 했다. 핵심은 다항식에서 p^n 형태로 표현된 부분만 1로, 나머지 부분은 0으로 만들면 된다는 것이다. 우선 지수를 추출해야 했는데 귀찮아서 ChatGPT 한테 시켰다. 1초만에 바로 뽑아준다. ChatGPT가 뽑아준 지수에서 맨 끝에 0만 더 넣으면 ..

워게임/CTFlearn 2023.08.12

[Root Me] Hash - SHA-2 - 암호학

SHA 해시함수와 관련된 암호학 카테고리 문제 문제 설명을 보면 전송중에 세션을 인터셉트 당했는데 해시 포맷이 알 수 없는것처럼 보인다고 한다. 정답은 SHA-1 해시로 제출하라고 한다. 문제에서 주어지는 해시값은 위와 같다. 가만보면 조금 이상한걸 발견할 수 있는데 해시값을 표현할땐 16진수를 사용하기 때문에 0 ~ 9의 숫자와 a ~ f 까지의 알파벳이 사용된다. 그런데 중간에 뜬금없이 k 가 끼어있다. 주어진 해시값의 길이를 계산해보니 65 글자였는데 *4를 하면 260 이 된다. 그런데 해시 크기가 260인 해시 알고리즘은 존재하지 않는다. 만약 k를 빼게 된다면 64글자가 되고, *4 하면 256 비트가 되니 k가 중간에 인터셉트 되어서 임의로 삽입된 글자일거라 판단했다. 온라인 해시 크랙 사이..

워게임/Root Me 2023.07.30

[TMUCTF] Prison - 암호학 / Tap code

흥미로운 암호학 문제 복잡한 암호 알고리즘보다 이런 문제들이 재미있는것 같다. challenge.txt 파일이 주어지는데 .... .... .. ... . ..... ... ..... .... .. .. .... .... ... ... .... ... ... . ..... .... .. .. .... .... ... .... .... .... .. ..... .... .. .... ... ... .. .. .... .... ... .... . ..... .... ... . ... . . ... ..... . ..... .. . .... .. ... .... ... .. .. ... .. .... .... ... . ... . ..... ... . ... . txt 파일 안에는 위와 같은 내용이 적혀있다...

CTF/암호학 2023.07.04

[Root Me] File - Insecure storage 1 - 암호학 / firefox_decrypt

Root Me 에서 제공하는 암호학 문제 뭔가 포렌식 쪽으로 분류되어도 상관없을듯한 문제이다. 암호를 푸는거지만 암호 관련된 지식보단 포렌식 쪽이 더 많지 않을까.. 문제는 user의 password 를 찾는것이다. 문제에서 주어지는 압축파일의 압축을 풀면 이렇게 firefox 라는 폴더를 찾을 수 있다. 폴더의 내용을 보면 .splite, key3.db 이런 파일들이 보이는 것으로 보아 firefox 브라우저를 사용할때 생성되는 각종 아티팩터들이 저장되는 폴더를 통채로 압축시켜서 업로드 한것 같다. 여기서 살펴볼 것은 signons.sqlite 파일이다. 해당 파일은 DB Browser for SQLite 이라는 도구로 내용을 확인할 수 있다. moz_logins 테이블을 확인해보면 www.root-m..

워게임/Root Me 2023.06.06

[angstromCTF] impossible - 암호학 / Python

암호학 두번째 문제 문제를 어이없게 풀어버려서 제대로된 풀이가 아니다. 서버에 원격접속할 수 있는 주소와 서버에서 돌아가고 있는 파이썬 코드가 주어진다. #!/usr/local/bin/python def fake_psi(a, b): return [i for i in a if i in b] def zero_encoding(x, n): ret = [] for i in range(n): if (x & 1) == 0: ret.append(x | 1) x >>= 1 return ret def one_encoding(x, n): ret = [] for i in range(n): if x & 1: ret.append(x) x >>= 1 return ret print("Supply positive x and y suc..

CTF/암호학 2023.05.24

[angstromCTF] ranch - 암호학 / Python / 카이사르암호

이번 CTF 에서 암호학 1번으로 나온 문제이다. 문제 설명에서 볼 수 있듯이 Caesar 암호를 응용한 문제이다. Caesar는 '카이사르' 라고도 읽힌다. 들어본 사람도 있겠지만, 카이사르는 로마의 황제 이름이다. 카이사르는 동맹군들과 소통해기 위해서 위 그림처럼 알파벳을 몇칸 씩 뒤로 옮겨 새로운 글자로 암호문을 만들었는데 이게 바로 카이사르 암호이다. 예를들어 Apple 라는 단어가 있다면, 이것을 한칸씩 알파벳을 뒤로 옮겨서 Bqqmf 라는 암호를 만드는 것이다. import string f = open("flag.txt").read() encrypted = "" shift = int(open("secret_shift.txt").read().strip()) for i in f: if i in s..

CTF/암호학 2023.05.23

[Space Heroes CTF] Rick Sanchez Algorithm - 암호학 / RsaCtfTool

제목부터 RSA 로 삼행시를 해놓은 RSA 관련 암호학 문제이다. RSA는 지금까지도 아주 많이 사용하는 공개키 알고리즘의 이름이다. 개발자인 Rivest, Shamir, Adleman 세명의 이름 앞글자를 따서 RSA 라고 이름을 붙혔다. 엄청나게 큰 숫자일수록 소인수분해가 어렵다는것에 착안해서 설계되었다. RSA의 원리는 아래와 같다. 1. 두 소수 p, q를 준비한다. 2. p-1, q-1과 각각 서로소(1외에는 공약수가 없는 수)인 정수 e를 준비한다. 3. ed를 (p-1)(q-1)으로 나눈 나머지가 1의 되도록 하는 d를 구한다.(d는 개인키로 공개하지 않는다) 4. n=pq를 계산한 후 n과 e를 공개한다.(이 둘이 공개키) 이 알고리즘을 이용해서 공개키-개인키 쌍을 만들고 공개키로 암호화했..

CTF/암호학 2023.05.09
반응형