読者です 読者をやめる 読者になる 読者になる

hiro-shugo’s diary

グダグダ雑談日記

ハッキング入門〈XSS編〉③

情報技術系

こんにちは!

中の人のヒロです(作詞作曲経験がある方)

 

今日はハッキング入門のシリーズ③をやっていきたいと思います。

 

前回の記事はこちら

ハッキング入門<XSS編>② - hiro-shugo’s diary

 

 

 

では早速【XSS challenges】の第5問目の解説をしていきたいと思います。

 

第5問目も今までと同じ。aleartを実行させればいいとのこと。

 

ということで早速いつものように適当に文字を入れていきます。

 

f:id:hiro-shugo:20161112143500p:plain

すると、何故かここまでしか文字が打てない。

 

逃げ道として、まずメモ帳に文字を打ち込み、それをコピー&ペーストしたが、それでも同じ結果だった。

 

これはもうソースを見るしかない。

毎度おなじみF12キーでソースを表示。

 

するとやはり文字数制限のコードが、、

 

 

maxlength="15"

 

の文字が、、

 

f:id:hiro-shugo:20161112143519p:plain

 

これでは15文字以上要するスクリプトを打ち込めない。

 

そこで下記の図のように右クリックでソースを変更した。

 

f:id:hiro-shugo:20161112143539p:plain

 

やったことは、maxlengthをminlengthに変更しただけ。

 

これで最大でも15文字しか打ち込めなかった欄が、最低でも15文字打ち込まないといけない欄に早変わり。

 

あとはいつも通り、ソースを参考にしやがら、スクリプトを読み込ませれば無事、突破することができた。

 

f:id:hiro-shugo:20161112143552p:plain

*試していないため、断言は出来ませんが、おそらくmaxlength=50のように=のあとの数字を変更しても行けると思われます。

っていうかこっちの方が模範解答だと思う

 

 

では続いて第6問目

 

ここらあたりから難易度がぐーっと上がった気がします。

 

こちらの問題もいつも通りalertを実行させろというもの。

 

いつも通りのスクリプトをまずはいれてみます。

 

f:id:hiro-shugo:20170109125845p:plain

 

 

するとやはり当然のように弾かれる。

そこでソースの方を見ると、 

f:id:hiro-shugo:20170109125857p:plain

 

あれ?

これ、二問目と同じようにやれば解けるんじゃね? というようなコード。

 

早速、2問目と同じよう解答を入れて見る。

 

f:id:hiro-shugo:20170109125921p:plain

 

するとまぁ、そんな簡単なわけはない。

あっさりと弾かれた。

 

その原因を探るために再びソースをチェックする。

 

f:id:hiro-shugo:20170109125938p:plain

 

すると、&gtや&ltといった書いた記憶のないコードが……

 

これはエスケープ文字と呼ばれ、XSS対策に用いられるもの

 

HTMLの特殊文字( < や > などのhtml特有の文字)を、別の文字列(&gtや&lt)へ置き換える事で、特殊文字の性質を無効化し(ただの文字列として認識させる)、クロスサイトスクリプティングXSS)ができなくなります【①】。

 

つまり何が言いたいかというと今回は〈 や 〉 が使えない。

 

つまり、〈script〉で挟む手法は使えない。

 

 

そこで今回は〈〉を使わない手法として、onclickを使用することにする。

 

onclickはJavaScriptの一種で

 

onclick=" "とするとそこをクリックすることにより" "内を実行するために用いられるものだ。

 

通常onclickはtypeがボタンの時に使用することが多く、例えばこのボタンを押せば次のリンクに飛びますよーというふうな時によく使われる。

 

今回はそれを使用し、以下のように記述する。

 

f:id:hiro-shugo:20170109130018p:plain

 

これを実行し、ソースを見ると、

 

f:id:hiro-shugo:20170109130036p:plain

 

エスケープされずに先ほどいれた文字がいい感じで入ってた。

 

これでテキストボックスはただのテキストボックスではなくなった。

 

テキストボックスをクリックすると、alertが実行されるようになったのだ。

 

 

早速、その状態でテキストボックスをクリックしてみる。

 

すると、、

 

f:id:hiro-shugo:20170109130047p:plain

 

突破することができた。

 

 

 

 

 

どうも第3回遅れてしまい申し訳ありませんでした。

 

第4回も行えそうですが、時間の都合上遅くなりそうです。