無料チケットの検索、アエロフロートの探索:ミッション2017

新年の前夜に、たくさんのお祝いの手紙をすくい上げ、私はアエロフロートから新年を救い、150,000マイルを獲得するという申し出に出会いました。 私は彼らの過去のプロモーションを覚えており 、そのようなイベントの分析をハッキングする弱点があったので、リンクをクリックしました。











プロモーションはゲームの形で行われました。その本質は、Google StreetView画像を使用して地図上のポイントを推測し、そのポイントをすべて取得することでした。そのポイントの数は、回答の精度に比例します。 すべてについて、すべてが6分与えられます。 ラウンドの間に、贈り物をキャッチ / 離れて 、余分なポイントのために飛行機飛ぶ ことも提案されています。 クイズの質問に正しく答えることで、6分を10分に増やすことができます。 良い結果を得るには、かなりのマイルを与えます。



ディレクトリをスキャンして(私の心を落ち着かせるため)、面白いものは何も見つかりませんでした(phpmyadminがインターネットに突き出ていることを除く)後、ゲーム自体の分析に進みました。



1)最初に見つけたのは、リプレイ攻撃です。 ラウンドはプレイ済みとしてマークされておらず、同じリクエストを無限に送信でき、利益を得ることができます。



for i in {0..50}; do torify curl 'http://mission2017.aeroflot.ru/ajax/round' --data 'val1=49&val2=9&game=563058&round=4974078&atype=map' & done;
      
      





ただし、この脆弱性はすぐに解決されました。



2)ミニゲームはすべてのロジックを実装しました。 そして、結果のみがサーバーに送信されました。 したがって、これらのリクエストは変更され、飛行機で何十万キロも飛行する可能性があります。



3)プロモーションの最後までのクイズは、リプレイ攻撃に対して脆弱でした。 そのため、ゲームの時間をごまかすことができます。 この方法の短所は、作成者のロジックによると、10分以上ダイヤルできないため、10分の偶数のリストから結果がノックアウトされることです。



4)しかし、上記のすべては、追跡して罰することができるハッキングです。 それで、ボットを書く時が来ました! ゲームスクリプトは、関数と変数の名前がかなり明確な、難読化されていない優れたコードです。 リクエストへの応答で、正しい座標が/ ajax / roundになったことは注目に値します。 この状況により、パノラマの各URLを座標にマッピングできました。



 map = {"https://www.google.com/maps/embed/v1/streetview?pano=_EjgB69lOpQheNB4ldZWsA&key=AIzaSyAdpt2jitUXkLd8NtkNQ_Ee6THUA_DZ-K0" : {lat: 40.62, lon: 22.94}, "https://www.google.com/maps/embed/v1/streetview?pano=oIMBbAJeLJfwiwNtgiVl-g&key=AIzaSyAdpt2jitUXkLd8NtkNQ_Ee6THUA_DZ-K0" : {lat: 22.27, lon: 114.16}, ... }
      
      





さらにすべては技術の問題にとどまります。開発者のコ​​ンソールを介して新しい機能を定義します。これにより、すべての質問にエラーと遅延が自動的に正しく答えられ、ミニゲームの結果に基づいて良い結果がスキップまたは送信され、手動モードでクイズに答えることができます 原則として、クイズは自動化されていますが、実装するには遅すぎます。



それは開発者(そしておそらく司会者)に与えられるべきであり、彼らは良い詐欺行為を持ち、すべての疑わしい参加者は禁止されました。 不正に対して分析を実行するためのすべてのパラメーターを見つけることはできませんでしたが、答えの速度と正確さの2つを知っています。



確かに、これらのメカニズムはボットを適切に遮断するには不十分です。 私の意見では、これプロモーションの最終評価を表示します。



最初の3つの脆弱性は純粋に論理的なものであり、十分なチェックとテストがありません。 しかし、植物学の問題が残っており、対処する必要があります。 以下は、ほとんどのボットを遮断し、世界をよりきれいにするための最小限の対策( ブログのほとんどのトレーシングペーパー)です。



1)STO-あいまいさによるセキュリティは、怠け者や学童を遮断します。 難読化と暗号化がすべてです!

2)参加者に正しい点の座標を純粋な形で返すことは悪い考えです。 問題はさまざまな方法で解決できます。結果を画像またはその上のマスクの形式で返し、精度を下げて別の座標系に変換します。

3)キーストローク、カーソルの移動、クリックなど、クライアントとサーバーの対話を追加します。 この方法は、ミニゲーム用のボットの作成を複雑にし、逆チューリングテスト用のデータを追加します。



ポイント3は確かに高価で複雑であり、プロモーションの世界では彼のための場所はほとんどありませんが、これらの目的のために作成された資金の量を考えると、ポイント2を無視することはありません。



PS私が実行したすべてのアクションは研究的性質のものであり、結論がプロモーションの開発者への警告として役立つことを願っています。



All Articles