webhacing.kr 38(old)
webhacing.kr 38번 문제는 LOG Injection와 관련된 문제로 보여집니다.
사이트에 접속하니 log injection이라고 나타납니다.
input안에 문구를 입력하니 아무런 반응이 나타나지 않습니다.
코드를 한번 살펴보겠습니다.
코드를 살펴보니 admin.php가 admin 페이지라고 주석으로 알려주고 있습니다.
admin.php에 접속하니
ip:입력한 문구
이러한 방식으로 로그가 기록되고 있습니다.
you must logged as “admin”
이라는 문구를 보니 admin으로 접속해야 문제가 풀리는 것으로 보입니다.
한번 index.php에 admin으로 로그인하여 보니 되지 않습니다.
log injection이 무엇인지 살펴보도록 하겠습니다.
LOG INJECTION
일반적으로 로그인에 대한 로깅을 파일에 다음과 같이 합니다 (로그인예가 아니더라도..)
String userid = request.getParameter("userid");
...
if (로그인성공)
log.write("User login succeeded for : " + userid);
else
log.write("User login failed for : " + userid);
로그가 정상적으로 기록된다면 아마 다음과 같은 형태가 될겁니다
User login succeeded for : guest
User login succeeded for : admin
그렇다면 로그인시 다음과 같은 문자열을 입력했으면 어떻게 될까요?
guest\nUser login succeeded for : admin
그럼 로그 결과는 다음과 같이 출력됩니다
User login succeeded for : guest
User login succeeded for : admin
User login succeeded for : admin
출처: https://unabated.tistory.com/entry/Log-Injection [랄라라]
(혹시 문제가 된다면 삭제하도록 하겠습니다)
위의 글을 살펴보니 로그인을 했을 경우에 기록되는 로그의 형식을 이용하여 인젝션을 하는 것으로 나타나 있습니다.
이 38번의 로그를 살펴보면
ip:입력내용
방식으로 로그가 저장되므로
anystring(아무런 문자열 입력)
ip: admin
을 입력하면 문제가 풀릴것으로 보입니다.
개발자 도구를 이용해
input tag 을 textarea tag로 바꿔서 위에 공격을 입력하면
(파란 네모상자는 IP 주소입니다)
을 로그인하여
admin.php에 접속하면 성공~
webhacing.kr 38(old)성공~!
'웹해킹 > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 36번(old) 풀이 (0) | 2020.12.23 |
---|---|
Webhacking.kr 34번(old) 풀이 (0) | 2020.12.22 |
Webhacking.kr 32번(old) 풀이 (0) | 2020.12.22 |
Webhacking.kr 27번(old) 풀이 (0) | 2020.06.01 |
Webhacking.kr 26번(old) 풀이 (0) | 2020.06.01 |