티스토리 뷰
CTF_WriteUps/2015_CTF
[2015_School_CTF] (Crypto 200) Master of guesswork
hackability 2015. 11. 8. 14:40최종 수정: 2015-11-08
hackability@TenDollar
안녕하세요. Hackability 입니다.
이번에 포스팅 할 내용은 2015 School CTF 의 Crypto 200 문제 입니다.
이 문제에서는 아래 파이썬 코드를 하나 제공합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from base64 import b64encode as encode from base64 import b64decode as decode import urllib2 def encrypt(key,message): result = "" for i in range(0,len(message),len(key)): message_part = message[i:i+len(key)] for pair in zip(message_part,key): result += chr(ord(pair[0])^ord(pair[1])) return result def decrypt(key,message): return encrypt(key,message) secret_url = "WxUHCWVfbwQERE8bDSsdbgcYHAVBQGdJchdAUARCGmgTckRCUlcQSG8RJUpAAwQQGGwSbhsHXg0=" key = raw_input("Please enter the key to decrypt necessary data:\n") try: response = urllib2.urlopen(decrypt(key, decode(secret_url))) with open('flag','w') as f: f.write(response.read()) except: print "Something goes wrong, sorry!" | cs |
문제를 보면 secret_url은 어떤 키와 섞여서 base64로 인코딩 되었음을 알수 있고 이를 복호화 하면 어떤 url 이 나옴을 알 수 있습니다.
먼저 secret_url을 decode 하면 헥사 스트링으로
5b150709655f6f0404444f1b0d2b1d6e07181c05414067497217405004421a6813724442525710486f11254a40030410186c126e1b075e0d
이런 값이 나옵니다. 이렇게 나온 헥사 스트링은 추후에 h = hexstring.decode('hex') 형태로 바꿔주게 되면 이쁘게 쓸 수 있습니다.
중요한것은 decrypt 함수에서 제가 입력한 key 값을 바탕으로 decrypt 되게 되는데 그러면 제가 key 값을 유추 해야 합니다.
그러면 키 길이를 7 글자라고 가정 하면 우리가 처음에 나와야 하는 스트링(http://)을 알고 있기 때문에 암호화 로직의 반대 역할을 하는 로직을 짜서 계산 합니다. 위의 암호 로직은 간단히 키와 평문을 xor 시키는 것이였으므로 우리는 반대로 암호 메시지와 http:// 스트링을 xor 시키면 됩니다. 그러면 다음과 같습니다.
h = hexstring.decode('hex')
key_str = "http://"
for i in range(0, 7):
print chr( h[i] ^ ord(key_str[i]) )
3asy_p@ 라는 글자가 나옵니다. 이 글자를 key 로 이용하여 decrypt를 시도해봅니다.
음.... 이 글자는 우리가 원하는 글자가 아닌것 같습니다. 그렇다면 우리가 구한 키 길이가 부족하다는 뜻 입니다. 1글자를 더 유추해서 찾아 봅니다.
3asy_p@s 라는 글자가 나옵니다. 이 글자를 key 로 이용하여 decrypt를 시도해봅니다.
3asy_p@ss 라는 글자가 나옵니다. 이 글자를 key 로 이용하여 decrypt를 시도해봅니다.
정상적인 url 이 떨어졌네요. 이 url로 들어 가면 flag 를 확인 할 수 있습니다.
"Flag is: remember_the_plaintext"
'CTF_WriteUps > 2015_CTF' 카테고리의 다른 글
[2015_School_CTF] (Exploit 500) Try to guess (0) | 2015.11.08 |
---|---|
[2015_School_CTF] (Exploit 300) Command line security (0) | 2015.11.08 |
[2015_School_CTF] (Admin 200) Cipollino, little onion (0) | 2015.11.08 |
[2015_TrendMicro_CTF] (Programming 300) Maze (0) | 2015.10.27 |
[2015_TrendMicro_CTF] (Programming 200) 사칙연산 풀기 (0) | 2015.10.27 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- IE 11 exploit
- IE 10 Exploit Development
- 윈도우즈 익스플로잇 개발
- data mining
- 쉘 코드 작성
- TenDollar
- WinDbg
- expdev 번역
- 2015 School CTF
- heap spraying
- IE 11 exploit development
- School CTF Writeup
- IE 11 UAF
- Windows Exploit Development
- IE 10 God Mode
- UAF
- IE 10 익스플로잇
- CTF Write up
- School CTF Write up
- IE 10 리버싱
- shellcode writing
- 데이터 마이닝
- shellcode
- IE UAF
- 쉘 코드
- 힙 스프레잉
- 2014 SU CTF Write UP
- Mona 2
- Use after free
- TenDollar CTF
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함