SQLインジェクションで埋め込まれる文字列

2008年12月の緊急注意喚起の続報〜SQLインジェクション攻撃の変化について | LAC」で書かれている文字列を考えてみる。考えるというほど考えてないけど。

<raqmtr$r{c<jwpt<+.z1/absnd*bfm.hs*nu:=&sbpjtp8
<raqmtr$r{c<jwpt<+.z1/absnd*bfm.iq*nu:=&sbpjtp8

という文字列が書きこまれるそうですが、データベースに書き込むのであればおそらく先頭部分は"<script src="を意味しているはず。ということで書き比べてみる。

<raqmtr$r{c<jwpt<+.z1/absnd*bfm.hs*nu:=&sbpjtp8
<script src=***********************************

なんとなく何かのルールに従って変換してると言われると、合ってそうな気もする。英字は英字(srcの例外はある)、記号は記号に置き換えられているっぽい気がする。
ということでもう少しそれっぽい部分を埋めてみる。

<raqmtr$r{c<jwpt<+.z1/absnd*bfm.hs*nu:=&sbpjtp8
<script src=http://******************></script>

やっぱり src の部分の例外をのぞき、英字は英字、記号は記号になるっぽい感じがするということで、もう少し埋めてみる。

<raqmtr$r{c<jwpt<+.z1/absnd*bfm.hs*nu:=&sbpjtp8
<script src=http://**.*****.***/**.js></script>

とりあえずこんな感じなのかな。

  • 英字は英字に置き換わる
  • 記号は記号に置き換わる
  • 例外: r → {
  • 例外: おそらく英字 → 1
  • 例外: > → 8

(もうちょっとちゃんと考える時間があれば追記します)

回答出てた。