아직 어려운 문제들은 이해하기 힘들 것 같아서 100점짜리 문제를 찾다가

눈에 띈 38번 문제를 선택!

 

38번 문제를 누르면 이런 페이지가 뜬다.

 

이것만 봐서는 아무것도 알 수가 없으므로 소스코드를 확인해보자

 

 

 

 

 

소스코드를 보니 Login 버튼을 누르면 값이 전달되고, Admin 버튼을 누르면 admin.php로 이동한다는 것을 알 수 있다.

 

 

 

 

그래서 처음 페이지로 돌아가 Admin 버튼을 눌러보니 이런 페이지가 떴다.

뭔가 ip주소를 나타내는 것 같은데 무엇인고?

 

 

 

그래서 다시 원래 페이지로 돌아가 먼저 login이라고 쓰고 Login버튼을 눌러봤다.

아무 변화가 없다..

그래서 admin 이라고 쓰고 다시 버튼을 눌러봤더니

나는 admin이 아니라고 알려준다.

 

 

 

 

 

그리고서 다시 Admin 버튼을 눌러보았더니 내가 썼던 login이라는 단어가 생겼다.

(admin을 넣고나서 확인한건 캡쳐하는걸 깜빡함..ㅎ)

 

 

 

 

먼저 내 ip주소로 추정되는 121.133.112.99:login을 넣어서 Login버튼을 눌러봤는데 무쓸모...

그래서 121.133.112.99:admin을 넣었더니

 

 

웬걸? 성공했다.

 

 

 

 

 

*추가 내용*

 

Log Injection



 

log injection이란 sql injection처럼 파라미터를 통해 로깅을 조절하는 방법을 말합니다


 

보통 웹 어플리케이션에서 log4j 등을 이용해 파일에 로깅을 합니다

일반적으로는 장애 발생시 에러 추적을 위해 사용됩니다

하지만 데이터 유실시 복구 방침으로 로깅을 하기도 하고요, 그냥 말 그대로 그냥 로깅을 하기도 하지요 또한 로그 파일을 파싱하여 무언가 통계를 내기도 합니다(웹CRM)


 

일반적으로 로그인에 대한 로깅을 파일에 다음과 같이 합니다 (로그인예가 아니더라도..)

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 : 

guestUser login succeeded for : admin

User login succeeded for : admin

붉은색 부분이 사용자가 입력한 부분이죠



출처: http://www.hides.kr/46 [Hide]

 

 

'Web Hacking' 카테고리의 다른 글

[웹해킹] 36번 문제  (0) 2017.09.04
[웹해킹] 54번 문제  (0) 2017.09.04
[웹해킹] 6번 문제  (0) 2017.05.01
[웹해킹] 4번 문제  (0) 2017.04.17
[웹해킹] 1번 문제  (0) 2017.04.17

+ Recent posts