Yozzang의 해킹일기 💻
article thumbnail
Published 2022. 8. 19. 00:21
Lena Tutorial (Level 2) Wargame/Lena Tutorial
728x90

이번 포스트에서는 레나 튜토리얼의 Level 2 문제에 대해 다루겠다.


문제를 실행하면 다음과 같다.

Level 2

## 문제 해석 : 

Level 1과 똑같은 문제다. 그러나 이번에는 Keyfile을 직접 생성해서 실행해보겠다. 그러기 위해 KeyFile의 검증 과정을 알아내야한다.

## 문제 풀이 : 

먼저 Ollydbg를 통해 해당 파일을 열어보겠다.

Level 2

프로그램을 계속 실행하다 보면 401073에서 "CreateFileA"라는 함수를 만나게 된다.

CreateFileA

빨간색 박스를 확인해보면 파일의 이름이 Keyfile.dat으로 되어 있다. 우선 아무값이 들어간 Keyfile.dat 파일 하나를 생성하겠다. (위치는 같은 폴더)

Keyfile.dat

키 파일을 생성하고 나서 해당 프로그램을 재실행해보겠다.

4010B8

계속 실행하다 보면 위와 같이 4010B8에서 CMP 명령어를 만나게 된다. 메모리 402173과 10을 비교하는데 바로 밑의 JL 명령어를 통해 메모리상의 값이 더 커야지 우회할 수 있는 것으로 보인다. 지금 메모리를 확인하면 4로 되어있다.(abcd = 4바이트) 이를 16바이트 이상으로 바꿔야 한다.

Keyfile.dat 수정 (4바이트 -> 16바이트)

이어서 실행하다 보면 아래와 같이 반복문을 만나게 된다.

반복문 (값 비교)

Keyfile의 값을 불러서 AL에 저장(4010C1)한 다음에 하나 씩 47이랑 비교(4010CB)한다. 동일한 경우 ESI를 +1한다.(4010CF) 그리고 마지막에 ESI와 8을 비교(4010D3)한다.

 

현재 우리의 메모리 상의 값이 30으로 되어있다. 이는 아스키코드 상의 "0"을 의미한다. 즉, 우리가 입력한 Keyfile의 첫번째 인덱스의 값이다. 47와 같아야 하므로 대문자 G를 쓰면된다. (G의 아스키코드 = 47) 또한 ESI가 8이어야 하므로 G를 8번 쓰고 나머지 랜덤값을 채워 16바이트를 만들면 된다.

Keyfile.dat 수정 (G * 8 + 8바이트)

최종적으로 파일을 실행하면 다음과 같이 성공한다는 알림창이 나타난다.

성공

### Keyfile.dat : GGGGGGGG12345678

'Wargame > Lena Tutorial' 카테고리의 다른 글

Lena Tutorial (Level 6)  (0) 2022.08.23
Lena Tutorial (Level 5)  (0) 2022.08.22
Lena Tutorial (Level 4)  (0) 2022.08.21
Lena Tutorial (Level 3)  (0) 2022.08.20
Lena Tutorial (Level 1)  (0) 2022.08.18
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!