또 뭐하지
[Dreamhack] rev-basic-3 본문
728x90
풀이
main 함수를 확인해보자. 이번에는 sub_140001000 함수를 확인해보면 correct가 출력되는 입력값을 알 수 있다.
함수를 살펴보면 24까지 for문이 돌고 있고 byte_140003000에 위치한 배열과 (i^a1)+2*i 값을 비교하고 있다. 그러면 우리가 원하는 값은 주소값에 위치한 배열값을 x라고 할 때, (x-2*i)^i 인 것을 알 수 있다. 그러면 이제 x를 구하고 연산하는 파이썬 코드를 작성해보자.
byte_140003000로 이동해보면 배열 값을 확인할 수 있다.
Hex View로 더 보기좋게 확인할 수 있다.
이 바이트값을 복사해서 연산을 해주자.
data = bytes.fromhex("49 60 67 74 63 67 42 66 80 78 69 69 7B 99 6D 88 68 94 9F 8D 4D A5 9D 45 00 00 00 00 00 00 00 00")
tmp = []
for i in range(24):
a = (data[i]-2*i)^i
tmp.append(chr(a))
for i in range(24):
print(tmp[i],end='')
이렇게 코드를 작성해서 실행해주면 아래와 같이 입력값을 확인할 수 있다.
파일을 실행해서 확인해보면 맞는 입력값을 찾았음을 알 수 있다.
'Write-up > Reversing' 카테고리의 다른 글
[Dreamhack] rev-basic-5 (0) | 2024.05.14 |
---|---|
[Dreamhack] rev-basic-4 (0) | 2024.05.13 |
[Dreamhack] rev-basic-2 (0) | 2024.05.13 |
[Dreamhack] simple-operation (0) | 2024.05.13 |
[Dreamhack] rev-basic-1 (0) | 2024.05.13 |