picoCTF 2021 Transformation
이 문제를 해결하는 열쇠는, 힌트대로, 넷에서 Transform 툴을 찾아내는 것이었던 것 같다.
Transformation
플래그를 가공한 파이썬
''.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])
파일 enc로 주어진 문자열
灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸弲㘶㠴挲ぽ
팁
You may find some decoders online
enc 바이너리
e7 81 a9 e6 8d af e4 8d 94 e4 99 bb e3 84 b6 e5 bd a2 e6 a5 b4 e7 8d 9f e6 a5 ae e7 8d b4 e3 8c b4 e6 91 9f e6 bd a6 e5 bc b8 e5 bc b2 e3 98 b6 e3 a0 b4 e6 8c b2 e3 81 bd
picoCTF {}의 pi를 주어진 파이썬으로 가공해 보자.
flag = "pi"
enc = ''.join([chr( (ord(flag[i]) << 8) + ord(flag[i + 1]) ) for i in range(0, len(flag), 2)])
print(ord(enc))
print(hex(ord(enc)))
결과
28777
0x7069
곤란했다. enc 바이너리와 전혀 다르다.
여기에서 다른 힘.
풀린 사람은 온라인 변환기를 사용했다고 썼습니다.
URL는 쓰지 않는다.
online convertor에서 검색
몰라
pico에 자주 있는 「문제명=힌트」로 해 본다
Transformation decorde tool로 구그하면
라는 것이 발견되었다.
시도해보기
빨간색으로 pi 28777이 보입니다.
다음 파랑 17236이 co?
flag = "co"
enc = ''.join([chr( (ord(flag[i]) << 8) + ord(flag[i + 1]) ) for i in range(0, len(flag), 2)])
print(ord(enc))
결과
25455
이 컨버터로부터 수치를 꺼낸다.
28777,25455,17236,18043,12598,24418,26996,29535,26990,29556,13108,25695,28518,24376,24370,13878,14388,25394,12413
솔버 쓰기
trans = [28777,25455,17236,18043,12598,24418,26996,29535,26990,29556,13108,25695,28518,24376,24370,13878,14388,25394,12413]
i = 0
flag = ""
while i < len(trans):
flag = flag + chr(trans[i] >> 8)
flag = flag + chr(trans[i] & 0xff)
i = i + 1
print(flag)
빙고
그러나 Burrows-Wheeler Transform이 무엇을 하는지 전혀 모릅니다.
Reference
이 문제에 관하여(picoCTF 2021 Transformation), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/housu_jp/items/e391e125bf10f66e474b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
''.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])
灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸弲㘶㠴挲ぽ
You may find some decoders online
e7 81 a9 e6 8d af e4 8d 94 e4 99 bb e3 84 b6 e5 bd a2 e6 a5 b4 e7 8d 9f e6 a5 ae e7 8d b4 e3 8c b4 e6 91 9f e6 bd a6 e5 bc b8 e5 bc b2 e3 98 b6 e3 a0 b4 e6 8c b2 e3 81 bd
flag = "pi"
enc = ''.join([chr( (ord(flag[i]) << 8) + ord(flag[i + 1]) ) for i in range(0, len(flag), 2)])
print(ord(enc))
print(hex(ord(enc)))
28777
0x7069
flag = "co"
enc = ''.join([chr( (ord(flag[i]) << 8) + ord(flag[i + 1]) ) for i in range(0, len(flag), 2)])
print(ord(enc))
25455
28777,25455,17236,18043,12598,24418,26996,29535,26990,29556,13108,25695,28518,24376,24370,13878,14388,25394,12413
trans = [28777,25455,17236,18043,12598,24418,26996,29535,26990,29556,13108,25695,28518,24376,24370,13878,14388,25394,12413]
i = 0
flag = ""
while i < len(trans):
flag = flag + chr(trans[i] >> 8)
flag = flag + chr(trans[i] & 0xff)
i = i + 1
print(flag)
Reference
이 문제에 관하여(picoCTF 2021 Transformation), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/housu_jp/items/e391e125bf10f66e474b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)