티스토리 뷰

CTF/Reversing

[Reversing.kr] Easy Keygen

Notchicken 2020. 3. 27. 14:37

 

이 문제는 Easy Keygen.exe와 ReadMe.txt가 주어진다.

ReadMe를 확인해보니 Serial이 5B134977135E7D13가 되는 Name 값을 찾아야 한다.

 

프로그램을 실행시켜서 Name에 임의의 값을 넣어보았다.

 

correct/wrong 판별이 되기 전 비교하는 부분을 확인해보면

입력한 abcde의 Serial은 7142537445 임을 알 수 있다.

입력한 Name 값으로 Serial을 생성하는 로직을 찾아가 보았다.

입력한 Name의 첫번째 값 a의 hex와 10을 XOR 연산하는 것을 확인할 수 있다.

a의 hex값 61과 10 XOR 연산

 

두번째 값 b는 20과 XOR 연산하는 것을 확인할 수 있다.

b의 hex값 62과 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