Super Express
< 파일 목록, encrypted 데이터 >
encrypted 파일하나와 problem.py파일하나가 주어진다.
문제의 소스인 problem.py는 아래와 같다.
● 문제 풀이
힌트가 되는 것은 encrypted 데이터 길이와 flag의 시작인 'TWCTF{' 이다.
암호 과정은 for 반복문을 돌며 flag의 문자 하나씩을 key를 이용하여 암호한다. 여기서 단서가 나오는데 암호화 된 문자 하나에 해당하는 암호값은 2개가 된다. 즉, flag값의 길이가 10이면 encrypted의 길이는 20이 된다.
encrypted 데이터의 길이를 보면 총 60이다. 결론적으로 보면 flag의 길이는 TWCTF를 포함해 총 30이라고 할 수 있다.
이제 사용하는 key가 어떻게 되는지 확인해 보기 위해서 아래와 같이 해 보았다. 일단 key가 짝수여야 하는 전제가 있다.
< key 값 테스트 >
flag에서 가져오는 문자 하나는 위처럼 모든 키 값의 조합을 이용하여 암호화한다.
해서 모든 key값이 같다면 이제 flag문자열과 encrypted에 대응하는 key값을 찾아내면 된다.
전수조사를 통해 얻어낸 key값은 QCCi, R99Z, dppR, lqql, nOOn 등이 있다.
이제 이 key를 이용하여 encrypted된 암호문을 flag값으로 변환하면 된다.
TWCTF Answer : TWCTF{Faster_Than_Shinkansen!}
'CTF | wargame' 카테고리의 다른 글
POX14 - Crypto-1 (파이썬 디컴파일, CBC블록암호, 소스 재정렬) (0) | 2016.10.10 |
---|---|
TWCTF16 - glance (png 픽셀 조정, gif 이미지 추출) (0) | 2016.09.06 |
Hack-me / Apollo 11 moon hoax (프리메이슨) (0) | 2016.07.22 |
Hack-me / Adios, Augustus De Morgan! (참, 거짓을 이용한 웹판별) (0) | 2016.07.22 |
Hack-me / Rape me,If you can (class파일 디컴파일[jad]) (0) | 2016.07.22 |