프로젝트/Webhacking.kr

[Webhacking.kr] Challenge(old) 58번 문제

Uggjjini 2021. 7. 19. 14:54

문제 페이지는 해당 페이지와 같다.

 

 

해당 페이지에는 입력창이 존재한다.

 

Send 버튼을 눌러보면 command not found 라는 문구가 출력되는데 이 문제는 command injection 문제일 듯하다.

 

 

입력창에 help 를 입력하여 사용가능한 명령어를 확인해 본다.

 

 

해당 페이지에서는 ls 명령어와 id 명령어, flag 명령어 를 사용할 수 있다는 것을 확이할 수 있다.

 

해당 명령어를 전부 실행시켜본다.

 

 

마지막 flag 명령어를 입력하면 permission denied....admin only! 라는 문구가 출력되는 것을 확인할 수 있다.

 

권한을 admin 으로 변경하여 flag 명령어를 실행하면 해당 문제가 풀릴 것 같다.

 

해당 페이지의 소스 코드를 확인한다.

 

 

socket io 로 서버와 송수신하는 것이 구현되어 있다.

 

socket.emit('Event', data); :: 전송

socket.on('Event', function(data)); :: 수신

 

socket.emit 로 cmd 를 실해하는데 username:[input] 을 실행한다.

 

스크립트 부분에서 guest 로 지정된 username 을 admin 으로 바꾸어주고 명령어를 실행하면 문제가 풀릴 듯하다.

 

개발자도구의 console 기능을 이용하여 username 을 admin으로 바꾸고 socket.emit 의 username:[input]의 input 을 flag로 변경하여 함수를 따로 정의해준다. 

 

 

해당 함수를 정의하고 flag 명령어를 실행하면 방금 정의한 함수와 기존의 함수가 동시에 실행되어 FLAG 값과 permission denied 문구가 동시에 출력되는 것을 확인할 수 있다.

 

 

해당 FLAG 값을 webhacking.kr 의 Auth 메뉴로 들어가 입력하면 해당 문제가 풀린다.