1. ホーム
  2. Web制作
  3. HTML/Xhtml

HTMLの使用は、制限されたipの投票サイト不正プログラムを達成するために

2022-01-09 05:08:05

  この方法は、投票サイトのリモートIPの監視にいくつかの抜け穴があることを利用して実現しており、本物の偽造IPアドレスは存在しない、httpは確立したtcpの上の第7層であり、本物のIPアドレスを偽造することは不可能である。この投票サイトにはCAPTCHAがあり、1IPにつき1票に制限されており、標準的な投票サイトと思われる。まず、CAPTCHAについて調べてみました。

  この投票サイトのキャプチャは、最初はシンプルで、標準的な場所に4桁の数字を配置し、よく認識されていました。その後、桁数が定かでなく、文字もあり、また位置の上下も定かでないものに変質し、この次の検証コードの識別は、ソフトウェアだけでなく、手動での識別も困難になっています。まさかの山の果て、闇と村の疑惑、次の断章を見よ!

  私の継続的な分析と研究では、彼のCAPTCHAチェックは、この抜け穴が見つかりました、このCAPTCHAは、仮想されていない識別、無CAPTCHA、直接バイパス、彼は唯一のCAPTCHAは空のjsコードであるかどうかをチェックする投票オプションページで設定するため、この検証の効果はゼロであることを発見した。一般的なJSこの検証は、ユーザーの使用を容易にするためだけです これは、この検証方法のみを使用し、検証コードが投票プロセスの動的ページで空であるかどうかをチェックしない、本当に褒められないとサイトのセキュリティに大きな潜在的なリスクをもたらす投票サイトを回避するために非常に良い方法です。

  CAPTCHAの問題については、私はクラックを理解している、投票が直接CAPTCHAファイルにアクセスしない限り、彼のダイナミックページは、CAPTCHAが空であるかどうかをチェックしないので、限り、投稿のCAPTCHAパラメータが空であるように。

  それからもう一つの問題は、この投票サイトではIPをチェックして、1つのIPが1票しか投票できないように制限しているので、これを実現するにはプロキシを使うか、常に切断してダイヤルアップするしかないことである。他に良い方法が思いつかなかったのですが、その友人がこのサイトで超高速で投票できるプログラムを見つけたので、このプログラムのIPソリューションが気になり、友人に解析してもらいました。

  まず、この投票ソフトのパケットをとって準備の仕方を勉強しました、投票ソフトを開いた後「ブラシ! ソフトウェアが競合しています!" めまいは、それがすることはできませんし、私はいくつかのプログラムを閉じて、唯一のパケットキャプチャプログラムも競合を促す閉じている、ああ、それはこのプログラムはまた、誰かが彼のソフトウェアを分析するかもしれないことを知っていることが判明、驚くほどプロセス名を横断して、疑わしいプログラムは、彼の分析またはパケットキャプチャにプログラムがある場合は、彼が実行することを拒否したかどうかをチェックします。ああ、これまでのところ、私は彼がソフトウェアを制限していることを知っている簡単な言語のプログラミングソフトウェア、およびWSockExpert_Cnパケットグラビングソフトウェアです。ああ、簡単な言語をオフにして、WSockExpert_Cnの名前の変更、スムーズにソフトウェア独自のセキュリティ検出を介して、正常に実行されます。

  私が使用中に彼が投票したパケットは以下の通りです。

XML/HTMLコード コンテンツをクリップボードにコピーする
  1. POST /vote/view.php? シド = 33 行為 = 投票  HTTP/1.1   
  2. 受け入れてください。*/*   
  3. リファラー: http://www.qdnfy.gov.cn/vote/vote.php   
  4. Content-Type: application/x-www-form-urlencoded   
  5. X-Forwarded-For: 218.20.218.200   
  6. クライアントIP:218.20.218.200   
  7. 経由:218.20.218.200   
  8. リモートアドレス:218.20.218.200   
  9. 受け入れ言語: zh-cn   
  10. エンコード:テキスト   
  11. ユーザーエージェント Mozilla/4.0 (互換性あり; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)   
  12. ホスト: www.qdnfy.gov.cn   
  13. クッキー  クッキー: PHPSESSID = pldjnb6scereodjm5niqb9q990
  14. コンテンツの長さ: 49   
  15. 接続 閉じる  

   -Forwarded-Forは、IPに続いて、このhttpヘッダパラメータを発見し、ハァッ、このパラメータは、私は知らなかったオリジナル、ハァッ、Baiduに殺到し、頭を持っている必要があります。

  以下はBaiduの後の解説記事ですが、非常によくできているので見てみましょう。
/{br   HTTPヘッダーのX-Forwarded-Forフィールドを偽造してIPを偽装 BaiduはX-Forwarded-Forという原理で、昔から出ているものだそうです。私もX-Forwarded-Forというのを初めて知りました。HTTPのリクエスト側であるクライアントの本当のIPを表す、略してXFFヘッダーで、HTTPプロキシやロードバランサーを通す時にだけ追加されるものです。

  RFC で定義されているような標準的なリクエストヘッダではなく、squid キャッシュプロキシサーバ開発ドキュメントで確認することができます。

標準的な書式は以下の通りです。

  X-Forwarded-For:クライアント1、プロキシ1、プロキシ2

  標準的な書式からわかるように、X-Forwarded-Forヘッダーはカンマで区切って複数持つことができます。最初の項目が本当のクライアントのipで、残りは通過したプロキシやロードバランサーのipアドレスで、いくつもの後に表示されます。

  wikiのX-Forwarded-Forの説明http://en.wikipedia.org/wiki/X-Forwarded-For分析。

  クライアントIPを偽装しようとしているので、まずは一般的なクライアントIPアドレスの取得方法を確認しましょう(phpを例にしています)。このコードはBaiduの検索で見つかったものです。おそらくほとんどのサイトがこのコードを使っていると思います。

XML/HTMLコード コンテンツをクリップボードにコピーする
  1. $ ユーザーIP {を使用します。 {を使用します。  = ($_server["http_via"]) ? //プロキシを使用しているかどうか    
  2. $_server["http_x_forwarded_for"] : $_server["remote_addr"];    
  3. //失敗したらREMOTE_ADDRから取得する    {を使用します。
  4. $ ユーザーIP {を使用します。  = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];    
  5. ? >

     HTTP_VIAヘッダは、プロキシサーバを使用しているかどうかを表します。そうでない場合は、REMOTE_ADDRフィールドからクライアントのIPアドレスを取得し、もしそうなら、X-Forwarded-ForからクライアントのIPを取得私は多くのプログラマがBaiduのコードからだと思いますそれはaspが似ています。

{

  では、テストしてみましょう。

サーバーサイドのコードです。

XML/HTMLコード 内容をクリップボードにコピーする
  1. //HTTP_X_FORWARDED_FORの出力    
  2. echo "HTTP_X_FORWARDED_FOR:". $_server["http_x_forwarded_for"];    
  3. //output REMOTE_ADDR echo "REMOTE_ADDR:". $_server["remote_addr"];    
  4. ? >

  REMOTE_ADDRは実アドレスです。

  つまり、ウェブサイトがX-Forwarded-ForからクライアントのIPアドレスを割り出すと、この論理的な抜け道を使って票を掻っ攫うことができるわけです。