1. このページの目的
Relative Path Overwrite (RPO) を意図的に発生させる。
2. このページの構成
- main.css ファイルを相対パスで読み込んでいる(本ページのHTMLソースを参照)。
- このHTMLファイル上に、CSSの記述が出力されるようになっている。
3. 試し方
(1) ここをクリックする --> /sec/3/index.php/(末尾にスラッシュがついています)
- このページは /sec/3/ というURLで読み込むが、RPOを試すには末尾に 'index.php/' を追加した /sec/3/index.php/ というURLで読み込む。
- main.cssを読み込む代わりに、本HTMLをCSSとして読み込んでしまう。
(2) クリックしたら、開発者ツールで「CSSファイルをリクエストしたURL」と「そのレスポンスの中身」を観察するとよい。
4. ペイロードの出力
以下で CSS を出力している。このページがCSSとして読み込まれる場合は、ここがCSSとして解釈される。
{}*{background-color:#777;}
CSSであるとブラウザに認識させるために、先頭に「{}」と書いてあるのがポイント(だが、他にも書き方はある)。
5. ポイント
- CSSファイルを相対パスで読み込んでいる。
- ユーザー由来の値を画面に出力している。(CSSの記述はHTMLエスケープしてもエスケープできない)