업데이트 2:이 게시물을 작성 후,나는 또한 사용자에게 무제한 삶/스핀을 제공 할 수 퀴즈 균열의 또 다른 취약점을 발견. 그 당시,나는 퀴즈 크래커에 또 다른 기능으로이 추가. 어제(1/29/2016),퀴즈 크래커는이 기능을 방지하기 시작했습니다(이 게시물에 설명 된대로 자동 질문 응답이 계속 작동합니다). 그러나 재미있는 것은,그것을 방지하는 것 외에도,퀴즈 균열 서버는 특히 나를 호출!
업데이트 1:아래와 유사한 기술을 사용하여,나는 또한 캔디 크러시에 대한 부정 크롬 확장을 출시했습니다. 여기에 그것을 얻을.
몇 주 전에 휴가 시즌이 시작되면서,나는 새로운 응용 프로그램,퀴즈 균열,내 친구들과 인기를 끌고되었다는 것을 발견하기 시작했다. 모르는 사람들을 위해,퀴즈 균열은 안드로이드,아이폰,페이스 북을위한 새로운 게임이다.. 이 게임의 전제는 간단하고 작년의 또 다른 인기있는 앱인 퀴즈와 매우 유사합니다. 기본적으로,당신은 자랑 권리를 위해 친구들과 경쟁,다양한 범주의 퀴즈 질문에 대답합니다. 단순(또는 어쩌면 그것으로 인해)에도 불구하고,퀴즈 균열은 페이스 북에 530 만 좋아하는을 건 드리는과 구글 플레이(안드로이드)스토어에서 최고 무료 응용 프로그램이되고 후반의로 매우 인기를 끌고있다..
당신은 이러한 광택과 성공적인 게임의 개발자가 부정 행위에서 안전한 방법으로 그것을 구현하는 시간을 촬영 한 것 같아요,하지만 퀴즈 균열에서 속임수 프로그램을 작성하는 것은 실제로 매우 간단 밝혀. 주말의 과정을 통해,나는 작성하고 겉으로는 천재 반신 반인에 메디 코어에서 최고의 퀴즈 균열 플레이어에서 저를 설정 크롬 확장,퀴즈 크래커를 해제 할 수 있었다. 당신은 아래의 행동에 퀴즈 크래커를 볼 수 있습니다:
그래서 나를 그렇게 쉽게 사람이 속임수를 할 수있는 도구를 구축 할 수 퀴즈 균열의 구현에 문제가 무엇입니까? 요컨대-퀴즈 크랙 클라이언트가 퀴즈 크랙 서버에서 다음 질문을 요청하여 사용자에게 질문 할 때 서버는 질문 및 가능한 답변으로 응답 할뿐만 아니라 정답 인 답변을 보냅니다. 취약점의 세부 사항,내가 그것을 발견하는 방법,나는 그것을 활용하는 크롬 확장을 구축하는 방법은 다음과 같습니다.
1–취약점 찾기
퀴즈 균열에서 친구에게 너무 많은 시간을 잃은 후,나는 내 자신의 특별한 방법으로 이길 수 있는지 확인하고 싶다고 결정했습니다. 나는 무작위 퀴즈에 너무 좋은 아니에요 동안,나는 리버스 엔지니어링에 꽤 좋다. 나는 퀴즈 균열의 서버에 내 자신의 요청을 보내는 활용 할 수 있습니다 의심,또는 퀴즈 균열의 서버에서 응답의 일부 데이터를 사용하여,게임에서 우위를 확보하기. 그래서 퀴즈 균열 클라이언트와 서버가 앞뒤로 어떤 종류의 데이터를 전달하는지 조사하기 시작했습니다.
이 데이터를 검사하기 위해,나는 페이스 북에 내 브라우저에서 퀴즈 균열을 연주,기록하고 내가 이전에 가글라는 만든 ‘d 도구를 사용하여 퀴즈 균열의 클라이언트와 서버 사이에 전송 요청과 응답을 검사하면서. 예,피들러 또는 크롬의 개발자 도구를 사용하여 동일한 작업을 수행 할 수 있다는 것을 알고 있습니다. 나는 당신이 클라이언트/서버 요청/응답을 볼 수 있도록뿐만 아니라,가글 또한 수정하고 이러한 요청을 매개 변수화 할 수 있기 때문에 대신 가글을 사용하기로 결정,그리고 당신이 할 수 있도록 당신의 선택의 프로그래밍 언어로 모듈을 자동 생성 코드 라인을 작성하지 않고 이러한 동일한 요청. 나중에 더 자세히.어쨌든,가글에게 내 브라우저에서 페이스 북에서 퀴즈 크랙에 녹화를 시작하고 가라고 말한 후,첫 번째 단계는이 페이스 북 페이지에 전송되는 많은 요청 중 어느 것이 페이스 북 자체에 비해 퀴즈 크랙과 관련이 있는지 파악하는 것이 었습니다..Anyway………………….. 1990 년대 초반,1990 년대 초반,1990 년대 초반,1990 년대 초반,1990 년대 초반,1990 년대 Facebook 이 프레임 바로 위의 요소는 독특한 웹 사이트에 게시하기위한 양식이었습니다.스페인어에 대한 나의 제한된 지식은”프레건 타”는”질문”을 의미한다는 것을 상기시켜 주었고,이는 퀴즈와 관련이있는 것으로 보이므로 이것이 퀴즈 균열이 호스팅되는 영역이라고 의심했습니다. https://preguntados.com/game로 가는 것은 그 의심을 확인했다:
프리 건타도에 퀴즈 균열을 재생.그리고 내가 연주하면서 요청들을 봤을 때,가글은 그 페이지가 어떤 웹사이트든 포함하고 있다는 것을 발견한다.”preguntados.com”:
하찮은 균열 질문에 대한 답변으로,나는 새로운 요청이 각 질문에 대해 발행 될 듯 나타났습니다. 사실,요청은 심지어 다음 질문이 될 것입니다 어떤 범주를 결정하기 위해 퀴즈 균열에”회 전자를 회전”전에 발행 될 듯:
이것은 아마도 질문이 미리 결정되었다고 생각하게 만들었고,”랜덤 스피너”는 실제로 서버의”랜덤 스피너”에 대한 응답을 기반으로 특정 카테고리에 착륙(특정 질문)하도록 미리 결정되었습니다.api.preguntados.com/api/users”스핀”버튼을 클릭하기 전에 전송한 요청입니다. 나에게 이것은 아마도 사용자에게 미리 물어볼 질문에 대해 경고 할 수 있음을 의미 했으므로 그것에 대해 생각하거나 찾고 싶은만큼 많은 시간을 가질 것입니다. 퀴즈 균열에,당신은 단지 질문이 표시되면 질문에 대한 답변을 찾고에서 사용자를 방지하기 위해,질문에 대한 답변을 30 초 얻을 수 있기 때문에이 장점이 될 것입니다. 또한,일부 게임 모드에서뿐만 아니라 당신이 올바른 얻을 질문의 수뿐만 아니라,당신이 이길 경우 결정 당신이 대답하는 데 걸리는 시간. 사용자에게 미리 질문을 표시 할 수 있다면 퀴즈 균열 자체가 질문을 표시하면 분명히 훨씬 더 빨리 대답 할 수 있습니다.
그래서 나는 내가 리드를 가지고 있다고 생각하고이 요청의 세부 사항을 파헤 쳤다. 이 요청은 실제로 내가 생각했던 것보다 훨씬 더 큰”사기꾼의 이점”을 제공 한 것으로 나타났습니다…
2–취약점을 자세히 살펴본
프레건타도스”요청/응답 상세히,나는 그것이 실제로 응답,질문 할 질문뿐만 아니라 가능한 답변을 제공 않는 것을 확인할 수 있었다. 그러나,나는 질문에 대한 정답 또한 응답에 포함 된 것을 발견 놀랐습니다!
위에서 볼 수 있듯이 이 요청에 대한 응답에는 질문,가능한 답변 및 가능한 답변 배열의 인덱스가 정답 입니다. 이 데이터가 실제로 다음 질문에 관한 것이라면”스핀”을 클릭 한 후”다음 아프리카 국가 중 어느 나라가 해안을 가지고 있지 않습니까?”그리고 정답은 위의 답변이어야한다,이는”그들 모두가 할”. “스핀”을 클릭하면이 가설이 정확함이 입증되었습니다:
“…….”…….”………..”………..”………..”………..”………..”.프레건타도스”당신이 제공하는 질문에 대답 할 때까지 항상 같은 응답을 제공합니다. 이것은 내가 내 자신의 도구에서이 주소를 요청하고 여전히 페이스 북에 퀴즈 균열 클라이언트가받을 것 같은 질문을받을 수 있다는 것을 의미합니다..
정답을 포함하는 응답은 사용자가 스스로 답을 결정해야 하는 것이 목표일 때,프로그래밍의”방어적인 프로그래밍”실천,특히”클라이언트를 신뢰하지 말라”는 웹 프로그래밍 원리와 직접적인 상충된다. 서버는 클라이언트의 역할을 제어할 수 없으므로 클라이언트가 악의적인 방식으로 행동하지 않는다고 가정할 수 없으므로 자신을 보호해야 합니다. 응답 검사 동작을 구현하는 올바른 방법은 서버 측에서 수행하는 것입니다. 어떤 시점에서 클라이언트에 정답을 보내지 말고 대신 클라이언트가 서버에 사용자의 답변을 보내 게하십시오.이 경우 서버는 정확성을 확인하고 올바른 경우 사용자에게 크레딧을 제공합니다(물론 질문 당 사용자 당 하나의 답변 만 보낼 수 있음).
그러나,퀴즈 균열은 이렇게하지 않았고,대신 클라이언트를 신뢰합니다. 이제 정답이 응답으로 전송된다는 사실을 활용하기 위해 악의적 인 클라이언트를 만드는 문제였습니다. 이상적으로,비 기술적 인 사용자가 설치하고 사용하기 쉬운 것 하나. 흠…어떻게 그냥 퀴즈 균열 게임에 버튼을 추가 크롬 확장에 대한,페이스 북에서 재생할 때,그 클릭 할 때 제대로 자동으로 현재의 질문에 대한 답변???
3–취약점 활용
위에서 언급한 것처럼 가글은 사용자가 요청한 요청을 필요에 따라 기록,수정 및 매개 변수화한 다음 원하는 프로그래밍 언어로 모듈을 자동 생성하여 동일한 요청을 수행할 수 있습니다. 나는 당신이 그 정보를 찾기 위해 내 가글 블로그 게시물 중 하나를 볼 수 있기 때문에 그 과정의 세부 사항에 가지 않을거야,하지만 본질적으로 나는 퀴즈 균열의 다양한 요청에 대한 가글 템플릿 파일을 생성,가글 크롬 확장 프로그램을 사용하여,다음 퀴즈 균열 자바 스크립트 라이브러리에 해당 템플릿 파일을 설정하는 가글 생성기를 사용. 이 작업을 수행하기 위해 코드 줄을 작성하지 않고,퀴즈 균열의 서버에 회담 자바 스크립트 라이브러리를 만들 수 있고,또한 경우에 미래에 대한 주위에 템플릿 파일이 나는 다른 프로그래밍 언어에 대해 나중에 같은 일을 할 수 있습니다.
이 퀴즈 균열 자바 스크립트 라이브러리를 한 후에는 퀴즈 균열 페이스 북 게임 페이지 아이 프레임에로드 도메인에서 실행되는 자바 스크립트에 크롬 확장을 구축하는 간단한 문제였다(Facebook preguntados.com 이 버튼을 클릭 할 때”.”버튼을 클릭 할 때”.”버튼을 클릭 할 때”버튼을 클릭 할 때”버튼을 클릭 할 때”버튼을 클릭 할 때”버튼을 클릭 할 때”버튼을 클릭 할 때”버튼을 클릭합니다.프레건타도스정답에 대한 응답을 구문 분석한 다음 정답을 나타내는 페이지에서 답변 버튼을 클릭합니다.