Web Hacking/webhacking.kr 풀이

old-38 write-up

박연준 2024. 1. 10. 02:52

문제 정보

https://webhacking.kr/challenge/bonus-9/

 

Challenge 38

 

webhacking.kr

 

풀이

 

문제에 접속하면 다음과 같이 LOG INJECTION이 보인다. SQL Injection 문제로 보인다.

 

소스 코드는 다음과 같다. 폼으로 index.php에 POST 메소드로 요청을 보내고 인풋으로 id를 입력받고 size는 20이다. 그리고 아래에 주석으로 a태그로 admin.php가 작성되어있다.

<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>

 

admin.php로 접속해보면 다음과 같다.  admin으로 로그인해야 한다고 한다.

 

 

다시 LOG INJECTION 페이지로 돌아와 admin을 입력해 로그인 버튼을 누르면  admin이 아니라고 나온다. 이를 우회하여야 할 것 같다.

 

일단 Log Injection이라는 취약점에 대해서 생소해서 이게 어떤 취약점인지 한 번 찾아본 결과, 이 취약점은 사용자의 입력을 로그에 그대로 반영할 경우 로그를 훼손해 관리자가 로그인한 것처럼 보일 수 있다. 따라서 로그를 확인하는 것이 부인방지가 불가할 수도 있다는 것이다. 따라서 guest만 입력했을 때의 로그는 다음과 같이 남는다.

[사용자ip]:guest

 

위를 토대로 guest를 admin으로 바꿔 로그를 훼손시키면 될 것이다. 따라서 이를 \n도 써보고 \r\n도 써보았는데 그대로 출력되었다. 따라서 사용자 입력 태그가 input으로 되어있어 이를 2줄로 입력할 수 있게 textarea 태그로 변경하고 아래에 아이피와 admin을 입력해주니 해결되었다.

 

 

 

위와 같이 입력하고 admin.php에서 새로고침하니 해결되었다.

'Web Hacking > webhacking.kr 풀이' 카테고리의 다른 글

old-06 write-up  (0) 2024.01.10
old39 write-up  (0) 2024.01.10
old-24 write-up  (0) 2024.01.10
old-16 write-up  (0) 2024.01.10
old-17 write-up  (0) 2024.01.10