
문제에 접속하면 LOG INJECTION 이라는 제목과 제출 폼이 하나 있습니다. 이렇게 봐서는 잘 모르겠으니 코드를 확인해 보겠습니다.
<html>
<head>
<title>Challenge 38</title>
</head>
<body>
<h1>LOG INJECTION</h1>
<form method=post action=index.php>
<input type=text name=id size=20>
<input type=submit value='Login'>
</form>
<!-- <a href=admin.php>admin page</a> -->
</body>
</html>
html 코드를 확인해 보면 admin.php로 이동할 수 있는 admin page라는 하이퍼링크가 주석 처리 되어있는 걸 확인할 수 있습니다.

만약 주석이 없어도 Gobuster(https://velog.io/@jinwoo_kim/Gobuster-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0) 라는 도구를 통해 위 사진처럼 admin.php를 찾을 수 있습니다.
이제 admin.php로 접속을 해보겠습니다.

접속을 하면 You must logged as "admin" 이라는 문구가 나옵니다. index.php로 돌아가서 login 창에 admin을 입력하면 you are not admin이라는 문구가 나옵니다.
admin.php의 이름이 log viewer이므로 일단 다른 이름으로 로그인을 한 후 다시 확인해 보겠습니다. guest로 로그인을 한 후 다시 접속해보면 아래 사진처럼 로그가 나오게 됩니다.

그렇다면 로그에 IP:admin 이라는 로그가 존재하면 사용자를 로그인으로 인식할 수도 있을 거 같습니다. 하지만 input type이 text인 경우 한 줄만 입력받기 때문에 개행 문자가 삽입되지 않습니다. 따라서 input을 textarea로 변경한 후 줄을 띄워서 새로운 로그를 입력하면 해결할 수 있습니다.
guest
Your IP:admin

사진처럼 textarea로 변경한 뒤 값을 입력해주면 풀리게 됩니다.

textarea 말고 burp suite를 이용하여 POST 패킷을 직접 수정해 조작하는 방법도 있습니다. burp suite를 실행한 뒤 proxy > Open browser를 눌러 패킷을 가로챌 브라우저를 실행합니다.

문제에 접속한 뒤 사진처럼 Intercept를 on으로 바꾸고 로그인 버튼을 눌러보겠습니다.
그럼 사진과 같이 패킷이 잡히고 Request 탭에서 패킷을 수정할 수가 있습니다. 아래의 id=aa 부분에 %0d%0aYourIP:admin 을 추가하면 동일하게 풀 수 있습니다. 여기서 %0d%0a는 CSRF(개행 문자)입니다.