[주의] 해당 글에는 풀이 및 정답이 적혀있습니다.
스스로 해결하고 싶으신 분들은 문제를 해결한 후, 이 페이지를 참고하셨으면 합니다 : )
문제를 보면, 시리얼이 "5B134977135E7D13"일 때, 이름을 찾으라고 한다.
실행은 이름을 입력하고 시리얼을 입력하는 순으로 흘러간다.
디버깅해보면, edx에는 입력한 이름, ecx에는 10, 20, 30이 반복되며 나타난다.
그리고 이름과 해당 값을 xor 계산하여 시리얼을 생성한다. 그렇다면, "5B134977135E7D13" 시리얼을 차례로 10, 20, 30을 xor하여 값을 구하면 답을 찾을 수 있을 것이다. (손으로 하나씩 해도 되는데, 코드를 구현해봤다.)
serial = "5B134977135E7D13"
x_value = [16, 32, 48]
result = []
idx = 0
cnt = 0
while idx < 16:
tmp = serial[idx:idx+2]
idx+=2
result.append(int(tmp, 16) ^ x_value[cnt])
cnt+=1
if cnt == 3:
cnt=0
for i in result:
print(chr(i), end='')
print('')
'Security' 카테고리의 다른 글
[pwnable.kr] simple login (0) | 2021.02.07 |
---|---|
[Reversing.kr] Music Player (0) | 2021.01.20 |
[Reversing.kr] Easy Crack (0) | 2021.01.16 |
pwnable.kr Toddler's Bottle (0) | 2021.01.07 |
HITCON Training Lab15 (0) | 2021.01.07 |