문제분석 & 풀이
문제에 접속하니 USER Console 이라는 간단한 콘솔창이 구현되어있다.
콘솔창에 무슨 명령어를 쳐봐야될지 모르겠어서 우선 간단한 리눅스 명령어들을 쳐보니 ls 명령어만 정상적으로 출력된다.
계속 여러 명령어들을 쳐보던 중 대다수의 명령어들이 찾을수 없다고 떠서 명령어 문제는 아니라고 판단했고
혹시? 하는 마음에 flag를 입력해봤다.
flag를 입력해보니 접근이 불가능하며 admin만 접근이 가능하다고 뜬다.
admin만 가능하다는 것은 나는 admin이 아닌 다른 계정을 사용중이라는 것인데 그것을 알아보기 위해
개발자도구(F12)를 이용하여 찾아봤다.
간단하게 소스를 분석해보자.
1. username은 "guest"
2. guest:[입력한 명령어] 의 형태로 서버에 데이터를 전송
3. 응답 메시지를 console에 출력
결론적으로 username이 "admin"이 아니라 "guest"라서 flag에 접근하지 못한 것이기 때문에
문제해결을 위해 username을 "admin"으로 바꾸면 문제가 해결되겠구나! 라고 생각하여 바꿔서 전송해봤다.
(참고로 소스를 바꾸는 작업은 개발자도구의 console창을 이용하면 된다.)
그러나 아쉽게도 접근이 거부됐다...ㅠㅠ
분명히 "admin"으로 바꿨는데 "admin"이 아니라서 안된다는 것이 이상해서, 소스에 console.log()를 추가하여 emit으로 보내는 데이터 값이 내가 원하는 형태로 전송이 되는 것이 맞는지 확인해봤다.
확인해보니 의도했던 admin:flag 가 아니라 이상한 형태로 데이터가 전송되는 것이 확인할 수 있다.
따라서 이번에는 admin:flag 의 형태로 데이터를 전송하게끔 emit 부분의 소스를 바꾼 후
콘솔에 flag를 다시 입력해봤다.
그 결과...?
flag값이 떴다!!!!
클리어!!!!