또 뭐하지

[Dreamhack] rev-basic-3 본문

Write-up/Reversing

[Dreamhack] rev-basic-3

mameul 2024. 5. 13. 23:25
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