「ツヴァイ・ディンゲは無限の罪を犯した:ダス・ユニバーサムとメンシュリッシュ・ドゥムハイト。 Aber beim Universum bin ich mir nicht ganz sicher。” *-アルバートアインシュタイン
それは夕方で、いつものようにやることはたくさんのことでしたが、怠inessでした。
ランダムなリンクによって、あるサイトにアクセスしましたが、そのアドレスは明らかに倫理的な理由で引用していません。 フラッシュクラフト; その本質は次のとおりです。空の場所で突くと、この場所に写真をアップロードしてニックネームを割り当てるように提案されます。 私の想像力は、単純な
情報の自動入力によって保護が行われたとしても、それがどのように行われるかを確認したかったのです。 些細なボットを書いて、あなたの写真で数十の場所を取ります。
写真をアップロードし、ニックネームを書いた...
しかし、Fiddlerで見たものは、どのボットよりもずっと面白いものでした。
それで、私たちは何を見ますか? 通常のHTTP Postリクエスト、コンテンツ内の何らかの種類のバイナリガベージ、そして-あなたの目を信じますか? -それは何ですか? -SQLクエリ?!
はい、市民、私たちは多くを見てきました。 Cでバッファオーバーフローが発生しました。不正なPHPコードでSQLインジェクションが発生しました。 これで私たち全員を驚かせることはありません。 しかし、アルバートジャーマノビッチは非常に正しかったので、普通の人も普通の人も、個々の個人の考えに追いつくことができませんでした。 貧しい、貧しい、私たちの想像力。
入力の衛生がないという事実について、私はそれを言及すらしません、これはすでに明白だと思います。 そのため、引用符でテキストボックスを駆動すると、静かな楽しみのもう1つの理由が得られます。サーバーは、適切なプログラムに適しているため、MySQLエラーを直接かつオープンに提供します。
はい、確かに、構文は大丈夫ではありませんでした。
公平に言えば、Post-requestの本文のSQLを単に置き換えるだけでは機能しません。チェックサムはバイナリ部分のどこかに収束しません。 テキスト入力フィールドを介したインジェクションからは、あまり有用な情報は得られません。入力テキストの長さに制限があり、サーバー部分はセミコロンで区切られたいくつかのコマンドの受け入れを慎重に拒否されます。
もちろん、この基本的な予防措置は、クライアント側で生成されたSQLクエリの実行という主な問題には影響しません。 リクエスト自体を置き換えるという特定の要望があれば、フラッシュ部分を簡単に変更することで可能になります。 倫理上の理由から、私は再び詳細について沈黙します。 そして、Flashも知っていたら...
概念実証として、SQLクエリを実行して、新しく登録されたユーザーのユーザー名を変更します
`peoples`を更新しますset name = ' new nickname ' where name = ' old nickname '
他の誰かの意図はそれほど平和ではないかもしれないと言う必要はないと思います。
もちろん、サイト管理者には脆弱性が通知されています。 サイトにはウェブマスターまたは管理者のアドレスがないため、少なくとも可能な限りのことはすべて行いました。
道徳:脳を使う、人々。 お願いします。
PSこの記事を書いている過程で、多くの人がほとんど苦しんでいました。Habrは保存されたバージョンを編集するときに写真をアップロードしたくなかったためです。
このエラーは、子iframeからsts_put_opener()を呼び出そうとすると発生します。 これは、親iframeがサブドメイン(paul7.habrahabr.ru)上にあり、子が主であるため、POST要求は成功しましたが、結果が得られませんでした。 同じ忠実なフィドラーを使用してリンクを取得する必要がありました。 率直に言って、怒り。
PPS親愛なるCTO! このトピックを読んだ場合、テスターに私を転送しないでください! これは私にとって一時的にとても幸運です...願っています。
* 「宇宙と人間の愚かさという2つの無限のものがあります。 確かに、私は宇宙について確信がありません。」