반응형

CTF/암호학 36

[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

[TMUCTF] Prison - 암호학 / Tap code

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

CTF/암호학 2023.07.04

[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

[Tenable CTF] Quit messing with my flags - 암호학 / MD5

풀이수로 알 수 있는것처럼 아주아주 쉬운 문제이다. flag{161EBD7D45089B3446EE4E0D86DBCF92} 문제 설명을 보면 위처럼 플래그 처럼 보이는 것이 주어져 있다. 물론 이게 진짜 플래그는 아니다. {} 중괄호 사이에 있는 문자열들을 보면 총 32 글자인것을 알 수 있다. 이렇게 글자수가 32이고 0~9, A~F 까지의 문자열로 이루어져있다면 해시 알고리즘 중 하나인 MD5 를 의심해봐야한다. https://www.md5online.org/md5-decrypt.html MD5 Online | Free MD5 Decryption, MD5 Hash Decoder www.md5online.org 구글에 검색해보면 MD5를 Decrypt 할 수 있는 온라인 사이트가 아주 많이 나온다. 위 ..

CTF/암호학 2023.03.20

[Tenable CTF] Not JSON - 암호학 / Base64 / Python

어렵진 않지만 조금 고민했던 문제이다. 문제에서 주어지는 것은 Base64 로 인코딩된 듯한 긴 문자열이다. 일단 바로 CyberChef(https://gchq.github.io/CyberChef/) 에서 Base64 디코딩을 해보았다. 뭔가 디코딩이 되긴 되는거 같은데.. 깔끔하지 않은 느낌이었다. 좀더 자세히 보기 위해 To Hex 레시피를 추가해 16진수값으로 한번 살펴보았다. notepad++ 에 옮겨적고 천천히 분석해봤더니 패턴이 보였다. 빨간 화살표가 표시된 1....2..... 부분부터 16진수 값에 특정한 패턴이 보였다. 맨앞에 있는 30, 31, 32, 33 ... 이 숫자들은 ASCII 코드로 0,1,2,3... 을 의미하는데 이 숫자들은 플래그의 INDEX 값이다. 그리고 세번째 열(..

CTF/암호학 2023.03.16

[JISCTF] Call - 암호학 / SMS PDU

쉬우면서도 어려운 문제.. 뭔지만 알면 쉽게 풀 수 있는데, 모르면 정말 오래걸릴 수 있는 문제이다. 문제에서는 별다른 설명 없이 00110000910000FF2E547419646687CFA0F41CA4032993D321D5B8414D9BD348D1397C1293CE63C458753AB3915028B44901 이런 텍스트를 주고 Decrypt 하라고 한다. 16진수로 디코딩 해보고 이전에 풀어봤던 문제에서 나온 Multi-tap 같은걸로 디코딩하려 해봤는데 (https://hackingstudypad.tistory.com/148) 아무것도 먹히지 않았다. 문제 제목이 큰 힌트가 될거라 생각하고 Call 과 관련한 키워드로 구글에 검색을 해봤다. 처음엔 Call Decoder 뭐 이런식으로 검색해보다가 휴..

CTF/암호학 2023.01.24

[JISCTF] Upside Down!! - 암호학 / Python

암호학 카테고리의 간단한 문제 간단한 코딩으로 풀 수 있는 문제이다. 별다른 설명 없이 암호화된 플래그가 주어진다. fkhrwv_wldm_vmtorhs_xszizxgvih_xibkgltizksb 위 내용을 Decrypt 하는것이 문제의 목표인데 문제 제목에서 힌트를 얻었다. Upside Down 이니 뭔가 알파벳으로 장난을 쳤을거라고 생각했다. 맨 앞에 있는 f 를 예로 들어보면 f는 알파벳 순서로 봤을때 6번째에 있으니 (a b c d e f) 알파벳을 z부터 a까지 거꾸로 나열했을 때 6번째에 있는 u 로 (z y x w v u) 바꾸면 되지 않을까 하는 생각이 들었다. 생각한 내용을 코드로 옮길때는 ASCII 코드표를 참고했다. 위의 표를 보면 소문자 a는 10진수로 97, 소문자 z는 10진수로 ..

CTF/암호학 2023.01.15

[Cyber Security Rumble] Hashfun - 암호학 / XOR / Python

Hash 인듯 Hash 아닌 문제 조금 헷갈렸는데 어렵지 않게 풀 수 있었다. 문제를 보면 FLAG 를 되돌릴 수 있는 방법은 없을거 같다면서 파일을 하나 제공한다. from secret import FLAG def hashfun(msg): digest = [] for i in range(len(msg) - 4): digest.append(ord(msg[i]) ^ ord(msg[i + 4])) return digest print(hashfun(FLAG)) # [10, 30, 31, 62, 27, 9, 4, 0, 1, 1, 4, 4, 7, 13, 8, 12, 21, 28, 12, 6, 60] 주어진 파일의 내용은 파이썬 코드이다. secret 에서 FLAG 라는 값을 가져와서 hashfun(FLAG) 의 ..

CTF/암호학 2022.12.21
반응형