티스토리 뷰
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
링크
TAG
- 17th HackingCamp CTF
- HackingCamp
- reversing.kr
- Level 03
- CodeEngn
- wargame
- 안드로이드 멘토링
- Android
- unity2d
- Advance RCE
- Reversing
- xcz.kr
- Level 04
- 풀이
- Programming
- Level 02
- Write-up
- Level 05
- Level 06
- 멘토링
- pwnable
- ftz
- Unity
- c++
- C#
- Basic RCE
- hackerschool
- Level 01
- 유니티
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함