whois
Webhacking.kr 38번 본문
[그림 1] 38번 문제
38번 문제를 클릭하게 되면 그림 1과 같은 페이지를 볼 수 있다. Log Injection 문제인 듯 하다.
Log Injection이란?
파라미터를 통해 로깅을 조절하는 방법을 말한다.
[그림 2] 38번 문제 소스코드
그림 1 페이지에서 우클릭 하여 페이지 소스 보기를 하면 그림 2와 같은 소스코드를 볼 수 있다. 핵심은 주석처리로 된 admin.php가 있다는 것이다.
[그림 3] admin.php
그림 1의 Admin 버튼을 클릭하게 되면 admin.php로 이동하게 된다. 해당 문제는 crontab이나 데몬을 이용하여 일정 주기로 내용을 삭제하는 것으로 보인다. 문제를 풀 때는 내용이 있었지만 Write-up을 작성하기 위해 캡처할 때는 그림 3과 같이 아무 내용도 보이지 않았다. 아무튼 admin.php는 로그 기록하는 페이지임을 유추할 수 있다.
[그림 4] admin.php 소스코드
그림 3 페이지에서 우클릭 하여 페이지 소스 보기를 하면 그림 4와 같은 소스코드를 확인 할 수 있다. 주석 처리 된 부분을 보면 hint로 admin이라고 적혀 있는데 admin을 이용하거나 admin으로 만들어라는 뜻인 듯 하다.
[그림 5] 테스트
admin.php 페이지에 로그 기록이 어떻게 나오는지 확인 하기 위해 그림 5와 같은 테스트를 진행하였다.
[그림 6] 로그 확인
그림 5에서 Login 버튼을 누르고 Admin 버튼을 눌러 admin.php로 이동해 보니 그림 6과 같은 내용을 볼 수 있었다. 다른 입력 값도 넣어봐야 알겠지만 기본적으로 아래와 같은 형식의 로그 기록이 보여지는 듯 하다.
공인 ip:입력 값
[그림 7] admin 입력
문제 페이지에서 admin을 입력하고 Login을 눌러 보면 그림 7과 같이 'you are not admin'이라는 문구를 볼 수 있다. 우회해서 넣으라는 뜻인 듯 하다.
[그림 8] 우회1
먼저 guest로 넣음으로써 일반 계정임을 알려주고 \n 개행 문자를 사용하여 공인ip:guest 줄 아래에 admin으로 나타내면 되지 않을까 하는 가설로 그림 8과 같은 문구를 넣었다.
[그림 9] 우회1 결과
그림 8을 실행하여 그림 9와 같이 guest 줄 아래에 admin이 생성되는 것을 볼 수 있다. admin이 생성되는 것은 보았지만 점수나 플래그는 획득하지 못하였다.
[그림 10] 우회2
형식까지 맞춰야 되는구나라고 생각하고 그림 10과 같이 'guest\n[공인ip]:admin' 형식으로 만들어 주었다. 본인의 공인ip만 확인하여 넣어주면 된다. 그리고 앞의 guest는 임의로 지정한 것이라서 다른 값을 넣어도 무방하다.
[그림 11] 성공
그림 10과 같이 구문을 넣고 Login 버튼을 누르면 그림 11과 같이 점수를 획득할 수 있다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 39번 (0) | 2018.07.19 |
---|---|
Webhacking.kr 32번 (0) | 2018.07.17 |
Webhacking.kr 27번 (0) | 2017.09.07 |
Webhacking.kr 25번 (0) | 2017.09.01 |
Webhacking.kr 26번 (0) | 2017.07.26 |