# 2020/07/27 upper layer progress 2020/7/27の勉強会資料 - websec(http://websec.fr/#) level11 ## websec ### 進捗 level11が終了 ### 学習内容 今回のCTFでは, カラムのid,username,enemyの中から指定することが出来ないenemyをどのように指定するかが、問題となる。 (enemyの中にflagがあると推測することも大変だったが、sql文でenemyのみ指定されていないとこから推測する。) 最初からSELECT文で、カラム名が指定されている。そのため、asを使って当初指定されているカラム名を別のカラム名を呼び出すようする。 以下の画像の通り、 入力フォームのUser IDには3、 With costumeのvalue属性に(select 3 id,enemy username from costume)を入れてあげる。 User IDとselect文のidの名前は同じ数値であれば3でなくてもいい。 ![](https://i.imgur.com/vgT8JXQ.png) (※今回はブラウザで行ったが、curl等でもOK) $valueでは、Rock-solid too! により、asは使えない。 本来asでカラム名を変更するが、sqlLiteではを省略して書くことができる。よって、id⇒3,enemy⇒usernameと変更している。 これによって、 $query = 'SELECT id,username FROM ' . $table . ' WHERE id = ' . $id; の実行の際、 本来はカラムusernameが呼び出されるところがカラムenemyが呼び出される。