티스토리 뷰






Reversing.kr의 문제 Position입니다.


문제 파일을 다운로드 받아보면 Position.exe와 ReadMe.txt 파일이 있습니다.


ReadMe.txt 파일을 열어보면,






Serial이 76876-77776 일 때에 패스워드를 찾으라네요.


그리고 패스워드는 4글자이고, p로 끝난답니다.


Position.exe를 실행시켜보겠습니다.






Name을 입력받는 부분과 Serial을 입력받는 부분이 있습니다.


그리고 그 밑에 성공인지 실패인지 알려주네요.


이제 IDA로 분석을 해보겠습니다.






sub_401740 함수의 리턴값이 1일 때 성공 문자열을 출력하네요.


sub_401740 함수를 분석해보겠습니다.






Name의 길이가 4글자여야 하고 소문자 알파벳으로 이루어져 있어야 하네요.







Name에 중복문자가 있는지 체크하는 부분입니다.






Serial값의 길이가 11글자인지 체크하고 6번째 문자가 '-'인지 체크합니다.







위 사진들은 Serial을 생성하고 비교하는 부분입니다.


코드를 요약해보면 Name값을 Shift, AND, Plus 연산들을 하여 나온 값들과 Serial의 각 숫자와 비교합니다.


연산과정을 이용해서 파이썬으로 코드를 짜보았습니다.


serial = [7, 6, 8, 7, 6, 7, 7, 7, 7, 6]

for i in range(ord('a'),ord('z')+1):
	for j in range(ord('a'),ord('z')+1):
		v7=i
		v9=j
		v8 = (v7 & 1) + 5
		v59 = ((v7 >> 4) & 1) + 5
		v53 = ((v7 >> 1) & 1) + 5
		v55 = ((v7 >> 2) & 1) + 5
		v57 = ((v7 >> 3) & 1) + 5
		v45 = (v9 & 1) + 1
		v51 = ((v9 >> 4) & 1) + 1
		v47 = ((v9 >> 1) & 1) + 1
		v10 = ((v9 >> 2) & 1) + 1
		v49 = ((v9 >> 3) & 1) + 1
		
		if v8+v10==int(serial[0]) and v57+v49==int(serial[1]) and v53+v51==int(serial[2]) and v55+v45==int(serial[3]) and v59+v47==int(serial[4]):
			print '1-' + chr(i),'2-' + chr(j)
			
for i in range(ord('a'),ord('z')+1):
	for j in range(ord('a'),ord('z')+1):
		v26=i
		v28=j
		v27 = (v26 & 1) + 5
		v60 = ((v26 >> 4) & 1) + 5
		v54 = ((v26 >> 1) & 1) + 5
		v56 = ((v26 >> 2) & 1) + 5
		v58 = ((v26 >> 3) & 1) + 5
		v46 = (v28 & 1) + 1
		v52 = ((v28 >> 4) & 1) + 1
		v48 = ((v28 >> 1) & 1) + 1
		v29 = ((v28 >> 2) & 1) + 1
		v50 = ((v28 >> 3) & 1) + 1
		
		if v27+v29==int(serial[5]) and v58+v50==int(serial[6]) and v54+v52==int(serial[7]) and v56+v46==int(serial[8]) and v60+v48==int(serial[9]):
			print '3-' + chr(i),'4-' + chr(j)

실행시켜보면..






4번째 문자가 p인 3번째 문자와 4번째 문자는 mp밖에 없네요.


그렇다면 Name값은 bump, cqmp, ftmp, gpmp 중에 하나겠군요.


올바른 Name값을 Position.exe에 입력해보면..






Correct!





'Reversing > Reversing.kr' 카테고리의 다른 글

[Reversing.kr] CSHARP 풀이  (0) 2018.03.22
[Reversing.kr] HateIntel 풀이  (0) 2018.01.21
[Reversing.kr] AutoHotkey1 풀이  (0) 2018.01.05
[Reversing.kr] Direct3D FPS 풀이  (1) 2018.01.05
[Reversing.kr] Ransomware 풀이  (0) 2018.01.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함