티스토리 뷰
이 문제는 Easy Keygen.exe와 ReadMe.txt가 주어진다.
ReadMe를 확인해보니 Serial이 5B134977135E7D13가 되는 Name 값을 찾아야 한다.
프로그램을 실행시켜서 Name에 임의의 값을 넣어보았다.
correct/wrong 판별이 되기 전 비교하는 부분을 확인해보면
입력한 abcde의 Serial은 7142537445 임을 알 수 있다.
입력한 Name 값으로 Serial을 생성하는 로직을 찾아가 보았다.
입력한 Name의 첫번째 값 a의 hex와 10을 XOR 연산하는 것을 확인할 수 있다.
두번째 값 b는 20과 XOR 연산하는 것을 확인할 수 있다.
로직을 계속 확인해 나가면 Name 값을 10, 20, 30, 10, 20, 30 ... 반복하며 XOR 연산으로 Serial 값을 생성한다.
A XOR B = C 일때, C XOR B = A 이므로, '5B134977135E7D13'를 10, 20, 30 ... 과 XOR하면 Name을 획득할 수 있다.
주어진 값을 XOR 연산한 뒤 출력해주면 Name값을 얻을 수 있다.
name = [0x5B, 0x13, 0x49, 0x77, 0x13, 0x5E, 0x7D, 0x13]
auth = ""
i = 0x0
for x in range(len(name)):
name[x] = name[x]^((i%0x30)+0x10)
i += 0x10
for x in range(len(name)):
auth = auth+chr(name[x])
print(auth)
>> K3yg3nm3
'CTF > Reversing' 카테고리의 다른 글
CODEGATE 2013 - Binary 100 (0) | 2017.05.30 |
---|
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday