-
Dreamhack - rev-basic-6wargame/Dreamhack 2024. 7. 23. 20:19
[LEVEL 1 - rev-basic-6 - reversing]
이 문제도 마찬가지로 입력값이 맞으면 Correct, 틀리면 Wrong을 출력하는 프로그램이 주어진다.
메인함수를 ida로 디컴파일한 모습이다.
이 함수를 참고해서 역으로 입력값이 무엇이 되어야 하는지 계산해야 한다.
조건문 안에 있는 문장을 해석해 보면, 결국 아래를 만족하는 a1을 찾아야 한다.
byte_140003020[a1] == byte_140003000[i]
먼저 byte_140003000을 들어가면 위와 같은 데이터를 볼 수 있다.
다음으로, byte_140003020을 들어가면 위와 같은 데이터를 볼 수 있다.
ida의 Hex View 탭에서 그대로 복사할 수 있다.
vs code에 붙여넣은 다음, 열 편집(Ctrl + Shift + Alt + 마우스 드래그) 기능을 이용해 "0x"랑 ","를 추가한다.
아까 byte_140003020[a1] == byte_140003000[i] 이 문장을 만족하는 a1의 값(인덱스값)들을 구해야 한다고 했는데, 이를 파이썬 코드로 작성하면 위와 같다.
여기서 아스키코드는 128을 넘어갈 수 없으므로 byte_array2에는 128개만 붙여넣었다.
코드를 실행시키면 위와 같은 문자열이 나온다.
문제에서 주어진 chall6.exe에 해당 문자열을 입력하면 Correct가 정상적으로 출력되는 것을 확인할 수 있다.
플래그를 획득했다!
'wargame > Dreamhack' 카테고리의 다른 글
Dreamhack - Secure Mail (0) 2024.08.04 Dreamhack - rev-basic-8 (1) 2024.07.23 Dreamhack - simple-operation (0) 2024.07.17 Dreamhack - rev-basic-4 (0) 2024.07.17 Dreamhack - rev-basic-3 (0) 2024.07.17