https://dreamhack.io/wargame/challenges/22/
rev-basic-8
Reversing Basic Challenge #8 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출
dreamhack.io
Input 문자열이 있는 곳으로 이동한 후에
사용자의 입력 값을 비교하는 chall8.7FF6F0B11000 으로 이동했다.
따라서 이 함수는
[7FF6F0B11000] 주소에 저장된 21개의 값과
사용자 입력 값의 연산을 한 값을 비교하는 함수이다.
[7FF6F0B11000] 주소에 저장된 값들은 이와 같다.
이 함수는 역연산이 힘드므로
키보드로 입력할 수 있는 0x21부터 0x72까지 Brute Force 공격을 통해
FLAG를 찾아야 된다.
key = [0xAC, 0xF3, 0x0C, 0x25, 0xA3, 0x10, 0xB7, 0x25, 0x16, 0xC6, 0xB7, 0xBC, 0x07, 0x25, 0x02, 0xD5, 0xC6, 0x11, 0x07, 0xC5]
cnt = 0
for i in key:
for j in range (0x21,0x7F,1):
if (j * 0xFB) & 0xFF == i:
print(chr(j),end="")
break
코드는 이와 같다.
FLAG를 찾았다!
'CTF > Dreamhack' 카테고리의 다른 글
[Dreamhack] rev-basic-9 (0) | 2024.05.12 |
---|---|
[Dreamhack] rev-basic-7 (0) | 2024.05.05 |
[Dreamhack] rev-basic-6 (0) | 2024.04.28 |
[Dreamhack] rev-basic-5 (0) | 2024.04.28 |
[Dreamhack] Reversing Basic Challenge #4 (0) | 2024.04.10 |