안경잡이개발자

728x90
반응형

  Type Confusion 문제는 PHP에서의 Type Confusion을 활용하여 Exploit을 해야 하는 웹 해킹 문제 유형입니다.

 

 

  문제를 확인하면 곧 바로 소스코드를 확인할 수 있는 페이지가 등장합니다. [view-source]를 눌러서 소스코드를 확인해 보도록 하겠습니다.

 

  소스코드를 확인해 본 결과 사용자로부터 json이라는 이름의 파라미터(Parameter)를 전달 받아서, 그 json 데이터의 'key'라는 데이터가 서버에서의 key 데이터와 동일한 경우 플래그(Flag)를 반환하는 것을 알 수 있습니다. 따라서 사용자가 입력한 데이터가 JSON 형식으로 서버에 전달이 되는 것으로 이해할 수 있을 것입니다.

 

 

  일단 소스코드를 확인해 본 결과, 접속자가 [check] 버튼을 누른 경우 submit_check() 함수가 수행되는 것을 알 수 있습니다. 따라서 이 함수가 정의되어 있는 util.js 파일을 확인해야 할 것입니다.

 

 

  확인 결과 단순히 사용자가 입력한 데이터를 JSON 형태로 담아서 서버로 전송하는 것을 알 수 있습니다. 자바스크립트(JavaScript) 소스코드가 난독화 되어 있지 않기 때문에 매우 간단히 소스코드를 분석할 수 있습니다. 굉장히 일반적인 형태의 매커니즘입니다.

 

 

  따라서 Type Confusion을 이용해서 Exploit하면 될 것입니다. 사실 PHP 소스코드를 보시면 느슨한 비교 연산자인 ==을 이용해서 사용자가 보낸 데이터와 서버의 Key 데이터를 검증하고 있는 것을 알 수 있습니다. 이 경우 한 쪽의 데이터가 True인 경우 전체가 참(True)가 되어 정답 처리가 될 것입니다.

 

 

  그러므로 {key: true}가 서버로 전달될 수 있도록 하면 됩니다. 저는 그래서 그냥 [Console] 탭을 열어서 함수를 재정의하여 무조건 true 값이 날아가도록 설정했습니다.

 

 

  결과적으로 다음과 같이 문제가 풀린 것을 알 수 있습니다.

 

 

728x90
반응형

Comment +3