CTF | wargame

TWCTF16 - super_express (Crypto)

nopdata 2016. 9. 6. 01:46

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!}