웹/webhacking.kr

webhacking.kr 38번

최경환의 해킹공부 2021. 3. 8. 03:01

제목과 내용을 입력할 수 있는 공간 외에 다른 내용은 찾아볼 수 없습니다.

소스코드를 보면 간단한 힌트가 적혀 있는데, 아마도 admin.php로 이동해야 문제가 풀리던지 아니면 또 다른 단서를 얻을 수 있을 것 같습니다.

먼저 단순하게 admin을 입려해보았는데, 그러면 admin이 아니라는 메시지만 보이고 크게 달라지는 점은 없습니다.

그래서 이렇게 url을 통해 접근해보니 아래처럼 로그 뷰어라고 뜨며 시스템 로그(?) 비슷한 것들이 적혀있는 페이지로 이동할 수 있습니다.

이 부분에서 뭘 해야할지 몰라서 좀 찾아보면서 공부했는데, 여기서 로그가 한 줄씩 아래로 추가되는 특징을 이용한다고 합니다.

이를 이용한 공격이 CR-LF 인젝션 공격이라고 하는데, 이름이 엄청 중요한 것 같지는 않고, 이 개념에 대해 이해하는  것이 이 문제 풀이의 핵심인 것 같습니다. 일단 log viewer나 첫 페이지에서 admin을 입력해본 결과 접근을 허용하지 않기 때문에 admin으로 로그인해야 문제가 풀릴 것이라는 것은 충분히 추측이 가능합니다.

 

이 때 입력값을 aa/r/n나의 ip:admin을 입력하게 되면 현재 로그가 쌓이는 특징 때문에 admin으로 로그인 하지 않았지만 admin이라는 정보가 로그인했다는 로그가 남게 될 것입니다. 즉 로그에는 아래처럼 저장된다는 뜻입니다.

 

나의 ip:aa

나의 ip:admin

 

이런 식으로 저장이 된다는 뜻입니다. 이때 두 줄의 입력을 하기 위해서는 input태그를 textarea태그로 바꿔주어야 합니다.

즉 이렇게 넣어준 뒤 admin.php 페이지로 이동하게 되면 문제가 풀립니다. 이 문제는 로그의 특성을 확인하여 CR-LF를 이용한 인젝션을 경험할 수 있는 문제였습니다.