본문 바로가기
Write Up/Wargame

ThroughTime Write Up

by wlgpdnjs 2017. 8. 15.


ThroughTime은 실행파일과 dll파일을 같이 주는데 메인 함수를 보면 dll에서 code_3 함수를 호출한다.



연도와 문자열을 입력받아 code3에 주는데 저기서  i는 그냥 문자열 길이 체크용



code3을 찾아보면 get_limit에 문자열 길이, 연도를 넣어서 연산한 값을 v4에 저장 후 입력받았던 문자열을 연산하는데 사용한다.

get_limit은 그냥 연도랑 문자열 길이의 차 % 127을 반환해준다.

문제에서 암호화된 문자열을 줬으니까 한 번 더 연산만 하면 원래 입력했던 문자열을 찾을 수 있으니까 그게 플래그

연도는 22부터 127 사이 값을 입력받았을 때 문자열을 암호화 하니까 그냥 22부터 127까지 돌려보면 찾을 수 있다.



Flag : TIME-BABY-IS-WATCHING-YOU




import sys
string=['4','(','-','"','K','%','%','+','3','D','!','8','C','6','-','%','5',';','9',';','=','X','-','(','/']

#for century in range(22,128):
#	for char in string:

def get_limit(century, leng):
	if century > leng:
		return century - leng

	else:
		return leng - century

cnt=0

for century in range(22,128):
	cnt=0
	chk=get_limit(century, len(string))
	print ""
	print "======================="+str(century)+"========================"
	for flag in string:
		
		if cnt == chk:
			cnt=0
		try:
			sys.stdout.write(chr((ord(flag)^(century + cnt))-1))
			cnt=cnt+1
		except:
			cnt=cnt+1


'Write Up > Wargame' 카테고리의 다른 글

didiz writeup  (0) 2018.02.05
unbreakable  (0) 2018.02.05
CCCRrracckkkMMe Write up  (0) 2018.01.29