문제 페이지는 해당 페이지와 같다.
해당 페이지에는 입력창이 존재한다.
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 메뉴로 들어가 입력하면 해당 문제가 풀린다.
'프로젝트 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 61번 문제 (0) | 2021.07.19 |
---|---|
[Webhacking.kr] Challenge(old) 60번 문제 (0) | 2021.07.19 |
[Webhacking.kr] Challenge(old) 59번 문제 (0) | 2021.07.19 |
[Webhacking.kr] Challenge(old) 54번 문제 (0) | 2021.07.19 |
[Webhacking.kr] Challenge(old) 53번 문제 (0) | 2021.07.19 |