6. ガバガバシステムは探せばたくさんある


Home -> 雑用 -> 雑用メモ -> [6. ガバガバシステムは探せばたくさんある]

2015/04/11 作成
一切推敲していない糞文章故、大変読み難い代物となっております。

概要

某所でほんの少し話題になっていた以下のサイト。

このサイトが何だかガバガバそうな雰囲気を醸し出していたので少々調べてみた記録。

一覧

  1. とりあえず投稿してみる
  2. 要求内容を紐解く
  3. 自前画像を投稿してみる
  4. まとめ

とりあえず投稿してみる

投稿時のリクエスト仕様が分かれば好きな絵を投稿し放題。
それを調べるために何か書いて適当に投稿してみる。
まず何か試験用に絵なり文字なりを書く。

テスト用投稿 画像00: テスト用投稿

次に必要な情報を以下のように記入する。題名も名前も必須。規約に沿っていることを確認。

テスト用投稿の情報 画像01: テスト用投稿の情報

「送信する」を押下すれば投稿完了である。

テスト用投稿の完了 画像02: テスト用投稿の完了

Topページを見ると新着の欄に先程書いた絵が追加されている。

テスト用投稿の確認 画像03: テスト用投稿の確認

表向きの仕様はたったこれだけの単純なものである。では裏ではどうなっているか。
お馴染みFiddlerで投稿の瞬間にキャプチャ―されたものを覗いてみる。

テスト用投稿の要求内容 画像04: テスト用投稿の要求内容

何かをPOSTしているようだ。まあ当然と言えば当然。この中身を紐解いていく。

要求内容を紐解く

紐解くといってもそれほど大袈裟ではなく単にどんなパラメータがあるかなーという程度。
ぱっと見では登場順に以下のような感じ。

結局のところ、pic_thumとpicの2つが操作できればやりたい放題となってしまう。
じゃあ操作できるフォーマットかどうか確かめたい。暗号化されていたらめんどい。

picIsPng=1なのでBase64からPNGを生成するだけのプログラムを書いた。
まずはpic_thumを突っ込む。

pic_thumの中身 画像05: pic_thumの中身

中身は100x142の生PNGだったのでそのまま表示できてしまった。これはいけない。

次にpicを突っ込んだところこんな事を言われた。

FormatException 画像06: FormatException

Base-64 文字配列または文字列の長さが無効です。」で調べても特に該当しそうな解決策は見つからない。
英語だと「Invalid length for a Base-64 char array.」と言うらしいのでそちらで調べたものの変わらず。
30分ほど時間を食いつぶした挙句に原因が判明。textBoxの文字数制限に引っ掛かっているだけだった

picの中身 画像07: picの中身

いろいろあったが蓋を開けてみればこちらもただの生PNGだった。
500x707ともなるとBase64エンコした文字列はデフォルトのtextBoxの文字数上限である32767文字を超えてしまう。

ここまでの調査結果から1つのことが分かる。
それは、一々絵を描かなくても自前の任意画像が投稿可能であるということ。
でももしかしたらどこかにチェックサムとかが隠されているかもしれないので本当にできるのか確認してみる。

自前画像を投稿してみる

Fiddlerは拡張機能を追加することでさらに便利なツールとなる。

サードパーティ製ではあるが「Request-To-Code」はオススメである。
今まで行っていたチマチマとした面倒な作業が馬鹿らしくなるくらい強力である。
要求を行う部分はこいつがほぼ全部自動で書いてくれる。

という訳でこれに乗っかって任意の画像を投稿する試験用コードを書いてみる。
まずは画像の用意。先程の画像を一部加工した以下の画像を用いる。

試験用画像 画像08: 試験用画像

最初なので加工は最低限。ばれるかばれないか程度の小さな文字を書いておいた。
この元ファイルのMD5は以下の通り。

試験用画像のMD5 画像09: 試験用画像のMD5

で、どうなったかというと1回ミスったけど以下のように投稿できた。というかできてしまった。

試験用画像の投稿結果 画像10: 試験用画像の投稿結果

ここで、以下から投稿結果の作品画像(shuji2015041103083072480200.png)をダウンロードする。

この画像もさっきと同じようにMD5を計算してやると…

作品画像のMD5 画像11: 作品画像のMD5

さっきと同じ。
つまり、このシステムはユーザからの要求をほぼ無条件に受け入れているのである。セキュリティ上大変まずい。
libpngの脆弱性を見つけたらウイルス広めたい放題。

今度は別の画像を投稿してみる。
Air書道には消しゴムツールが存在しないので、色が制限内でも原理的に描くのが不可能な絵も存在する。
しかし輝度の高い色を背景色としてその色を消しゴムツールの代替として用いる場合には、ある程度の余白を用意すれば多くの表現が可能となる。
以下の絵もそのようにして原理的には描くことができるものである。無論、人間が現実的に描けるかどうかは別である。

投稿例 画像12: 投稿例

上の画像はhttp://i.imgur.com/Lsx4QqH.jpgを加工したものである。
実際には普通の写真なども投稿が可能であるが、それでは芸がないのでこういったものを用意してみた。
で、結果は以下の通り。

[画像12]の投稿結果 画像13: [画像12]の投稿結果

投稿できた。

まとめ

ガバガバシステムは早く直しましょう。


管理人Twitter: @su_te_ak/◆mmft4k9vgtL6
要望等はTwitterへ

Home -> 雑用 -> 雑用メモ -> [6. ガバガバシステムは探せばたくさんある]

ここ以降は鯖が勝手に付加するやつです