Reversing/Wargame
[Dreamhack] rev-basic-4
와븨
2023. 8. 16. 21:48
문제 파일을 디버거로 열었을 때 모습
corret를 출력하는 입력값을 찾아야하니 문자열을 찾아봤다.
corret의 위치로 이동해보자
corret의 위쪽을 보면 test eax,eax에서 입력값과 정답을 비교한다는 것을 알 수 있다.
test eax,eax의 위 코드를 보면 7FF62FFD1000에 정답이 있는 것 같다. 이 위치로 이동해보자
이동해보니 27개의 문자열과 입력값을 비교한다는 것을 알 수 있었다.
코드는 다음과 같다.
1. eax에 첫 번째 입력값을 넣고 4비트 shift
2. ecx에 첫 번째 입력값을 넣고 4비트 shift
3. ecx와 F0을 and 연산
4. eax와 ecx를 or 연산하여 eax에 저장
5. 그 후, 7FF62FFD3000 값을 가져옴
HEX DUMP를 살펴보니 27개의 문자가 있었다.
파이썬 코드를 작성해서 돌려봤더니
정답이 나왔다.