
1. Log injection 글자와 함께 입력할 수 있는 칸이 있다. 우선 log injection에 대해 검색해 정보를 얻었다.
<Log Injeciton이란?>
공격자가 로그 파일에 악의적인 데이터를 삽입함으로써, 로그의 무결성을 해치고, 보안 경고 탐지를 우회하거나, 로그를 조작하여 포렌식 분석을 어렵게 만드는 공격 기법이다. 이 공격은 입력값을 제대로 검증하지 않고 로그에 기록할 때 발생한다. 로그 인젝션 공격에서는 보통 줄바꿈(\n)을 이용해 로그 포맷을 깨거나 조작한다.
- 정의: 사용자 입력을 로그에 기록할 때, 이 입력값이 로그 형식을 깨뜨리거나 로그에 악성 정보를 삽입하게 만들어 시스템 관리자나 분석자가 오해하도록 유도하는 공격.
- 목적:
- 로그 조작 및 위조
- 포렌식 회피
- 관리자 혼란 유도
- 추가 공격(예: 로그 파서 취약점 이용) 기반 마련


2. 아무값이나 입력해보았는데 먹히지 않고 다시 입력화면으로 돌아온다. admin을 입력했을 때는 you are not admin 문자가 떴다.

3. 페이지소스를 확인하니 'admin.php' 로 이동할 수 있는 듯 하였다.


4. admin.php로 이동하니 지금까지 시도한 로그인 흔적이 남아있다. log인 듯 하다.
저장 형식은 <나의 ip주소: 입력값>이다.
따라서 로그 조작으로 <나의 ip주소: admin> 을 만들어내면 될 것 같다.
위에서 log injection에 대해 찾아봤을 때, 보통 줄바꿈을 통해 로그 포맷을 깨거나 조작한다고 하였으니 이를 이용해보겠다.

5. 줄바꿈으로 새 로그 라인을 만들 수 있기에,
우선 줄바꿈을 할 수 있도록 index.php의 html의 'input' 부분을 'textarea'로 변경해주겠다.
(원래 로그인 폼이 <input type="text">였다면, 입력할 수 있는 내용이 한 줄로 제한되며, %0a와 같은 줄바꿈 코드를 입력해도 실제로 줄바꿈이 반영되지 않을 수 있다. 하지만 이를 <textarea>로 바꾸면 사용자가 여러 줄을 직접 입력할 수 있고, 줄바꿈 문자(\n, %0a)도 정확히 반영된다.)

6. 윗 줄에는 아무 글자나 입력했고, 아랫줄에는 <내 ip주소:admin> 을 입력했다.

7. 해결 완👊🏻
'SWUFORCE 워게임👊🏻' 카테고리의 다른 글
| [Webhacking] old - 23 ; web (0) | 2025.05.19 |
|---|---|
| [워게임 추가 실습] Log Injeciton (0) | 2025.05.13 |
| [Dreamhack] web ; xss -1 추가 공부 (0) | 2025.04.08 |
| [Dreamhack] level 1 ; web ; xss -1 (0) | 2025.04.02 |
| [Dreamhack] rev ; simple-operation 추가 공부 (1) | 2025.04.01 |