Home -> 雑用 -> 雑用メモ -> [6. ガバガバシステムは探せばたくさんある]
2015/04/11 作成
一切推敲していない糞文章故、大変読み難い代物となっております。
某所でほんの少し話題になっていた以下のサイト。
このサイトが何だかガバガバそうな雰囲気を醸し出していたので少々調べてみた記録。
投稿時のリクエスト仕様が分かれば好きな絵を投稿し放題。
それを調べるために何か書いて適当に投稿してみる。
まず何か試験用に絵なり文字なりを書く。
画像00: テスト用投稿
次に必要な情報を以下のように記入する。題名も名前も必須。規約に沿っていることを確認。
画像01: テスト用投稿の情報
「送信する」を押下すれば投稿完了である。
画像02: テスト用投稿の完了
Topページを見ると新着の欄に先程書いた絵が追加されている。
画像03: テスト用投稿の確認
表向きの仕様はたったこれだけの単純なものである。では裏ではどうなっているか。
お馴染みFiddlerで投稿の瞬間にキャプチャ―されたものを覗いてみる。
画像04: テスト用投稿の要求内容
何かをPOSTしているようだ。まあ当然と言えば当然。この中身を紐解いていく。
紐解くといってもそれほど大袈裟ではなく単にどんなパラメータがあるかなーという程度。
ぱっと見では登場順に以下のような感じ。
結局のところ、pic_thumとpicの2つが操作できればやりたい放題となってしまう。
じゃあ操作できるフォーマットかどうか確かめたい。暗号化されていたらめんどい。
picIsPng=1なのでBase64からPNGを生成するだけのプログラムを書いた。
まずはpic_thumを突っ込む。
画像05: pic_thumの中身
中身は100x142の生PNGだったのでそのまま表示できてしまった。これはいけない。
次にpicを突っ込んだところこんな事を言われた。
画像06: FormatException
「Base-64 文字配列または文字列の長さが無効です。」で調べても特に該当しそうな解決策は見つからない。
英語だと「Invalid length for a Base-64 char array.」と言うらしいのでそちらで調べたものの変わらず。
30分ほど時間を食いつぶした挙句に原因が判明。textBoxの文字数制限に引っ掛かっているだけだった。
画像07: picの中身
いろいろあったが蓋を開けてみればこちらもただの生PNGだった。
500x707ともなるとBase64エンコした文字列はデフォルトのtextBoxの文字数上限である32767文字を超えてしまう。
ここまでの調査結果から1つのことが分かる。
それは、一々絵を描かなくても自前の任意画像が投稿可能であるということ。
でももしかしたらどこかにチェックサムとかが隠されているかもしれないので本当にできるのか確認してみる。
Fiddlerは拡張機能を追加することでさらに便利なツールとなる。
サードパーティ製ではあるが「Request-To-Code」はオススメである。
今まで行っていたチマチマとした面倒な作業が馬鹿らしくなるくらい強力である。
要求を行う部分はこいつがほぼ全部自動で書いてくれる。
という訳でこれに乗っかって任意の画像を投稿する試験用コードを書いてみる。
まずは画像の用意。先程の画像を一部加工した以下の画像を用いる。
画像08: 試験用画像
最初なので加工は最低限。ばれるかばれないか程度の小さな文字を書いておいた。
この元ファイルのMD5は以下の通り。
画像09: 試験用画像のMD5
で、どうなったかというと1回ミスったけど以下のように投稿できた。というかできてしまった。
画像10: 試験用画像の投稿結果
ここで、以下から投稿結果の作品画像(shuji2015041103083072480200.png)をダウンロードする。
この画像もさっきと同じようにMD5を計算してやると…
画像11: 作品画像のMD5
さっきと同じ。
つまり、このシステムはユーザからの要求をほぼ無条件に受け入れているのである。セキュリティ上大変まずい。
libpngの脆弱性を見つけたらウイルス広めたい放題。
今度は別の画像を投稿してみる。
Air書道には消しゴムツールが存在しないので、色が制限内でも原理的に描くのが不可能な絵も存在する。
しかし輝度の高い色を背景色としてその色を消しゴムツールの代替として用いる場合には、ある程度の余白を用意すれば多くの表現が可能となる。
以下の絵もそのようにして原理的には描くことができるものである。無論、人間が現実的に描けるかどうかは別である。
画像12: 投稿例
上の画像はhttp://i.imgur.com/Lsx4QqH.jpgを加工したものである。
実際には普通の写真なども投稿が可能であるが、それでは芸がないのでこういったものを用意してみた。
で、結果は以下の通り。
画像13: [画像12]の投稿結果
投稿できた。
ガバガバシステムは早く直しましょう。
管理人Twitter: @su_te_ak/◆mmft4k9vgtL6
要望等はTwitterへ
Home -> 雑用 -> 雑用メモ -> [6. ガバガバシステムは探せばたくさんある]
ここ以降は鯖が勝手に付加するやつです