minhui study

Webhacking.kr 58번 본문

Hacking/Webhacking.kr

Webhacking.kr 58번

minhui 2020. 2. 18. 20:34

Challenge 58 - 150 Points

 

문제에 들어가면 다음과 같이 콘솔창 같은 게 뜬다.

 

아무거나 쳐보다가 ls라고 치니 다음과 같이 index.js temp.html이 떴다.

 

flag라고 치면 거부되고 오직 admin만 접근이 가능하다고 뜬다.

소스코드를 살펴보자

web socket을 사용하기 위해 sokcket.io package를 사용한다. 클라이언트나 서버에서 socket.io를 이용하여 event를 발생시킬 수 있고 이 event는 서로에게 전달된다.(서버와 비동기 양방향 통신) socket.io는 io라는 변수명으로 서버에서 사용된다.

prevenDefault() 기본으로 정의된 이벤트를 작동하지 못하게 하는 메서드이다. (<a> <input> <textarea>의 기본 동작을 막을 수 있다.)

여기서는 만약 우리가 submit버튼을 눌렀을 때 페이지가 넘어가거나 새로고침 되는 것을 막기 위해 넣은 함수인 것 같다.

 

socket.emit('이벤트명', {메세지}); 이벤트를 보내기 위해 사용되는 함수

socket.emit('cmd', username+":"+$('#m').val());

 var username에 보면 guest로 되어있으므로 소캣을 쏠 때 guest:command양식으로 쏜다는 것을 알 수 있다. (m input 입력란의 id이다.) 만약에 아무것도 입력하지 않으면 false를 return한다. 

 

socket.on('이벤트명', function(data){});

: 이벤트를 받기 위해 사용되는 함수 ( event -> string, callback -> function )

 

 

$('#messages').append($('<li>').text(msg));

: .append() 메소드는 선택된 요소의 마지막에 새로운 요소나 콘텐츠를 추가해준다. 

그러므로 id가 messages인 곳의 <li>뒤에 새로운 text(msg)를 추가해준다. 

 

아까 위에서 flag라 입력했을 때 only admin라고 했으므로 다음과 같이 guest:flag가 아닌 admin:flag가 담신 소켓을 보내면 플래그가 나온다.

문제 해결 ~!!

'Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 6번  (0) 2020.03.02
Webhacking.kr 23번  (0) 2020.02.18
Webhacking.kr 47번  (0) 2020.02.16
Webhacking.kr 32번  (0) 2020.02.15
Webhacking.kr 31번  (0) 2020.02.15
Comments