1月26日(月)3コマ目
今日、やったこと
[確認テスト 解説]バッファオーバーフロー
XSS検証用サイト作成
今日のホワイトボード
[確認テスト 解説]バッファオーバーフロー
設問1
配列buffの先頭アドレスはデバッガで、
①配列buff宣言後にブレークポイントセット
②実行
③ブレークポイントで停止したら、xコマンドで確認
②実行
③ブレークポイントで停止したら、xコマンドで確認
でわかる。
|
| 図 配列buffの先頭アドレス |
設問2
getgenre()関数からのリターンアドレスは、getgenre()呼び出しのあたりのアセンブラを確認するとわかる。
|
| 図 getgenre()呼び出しあたりのアセンブラ |
配列buffはアドレス0x7f・・0番地から始まっていない点に注意!!
デバッガで確認すると、以下のように、左端は0番地ではない。
|
| 図 デバッガで確認すると |
解答欄は左端が0番地、右端がf番地になるように解答してほしい。
|
| 図 正解のメモリマップ |
ここを間違って解答している方が多かった。
設問3
”総記”や”哲学”の表示(prinf()呼び出し)がメモリ上のどこにロードされているかは、disasコマンドでアセンブラにして確認。
|
| 図 printf()呼び出し部分 |
同じ処理を行っているため、アセンブラも同じ。12バイトごとにprintf()呼び出しがある。
設問4
設問2のメモリマップから、配列buffの先頭から13バイト目にリターンアドレスがあることが分かる。
このプログラムはコマンドライン引数の”,”以降を配列buffにコピー。
ここにバッファオーバーフローの脆弱性がある。
|
| 図 デバッガで実行すると |
コマンドラインからでも実行できる。
|
| 図 コマンドラインから実行 |
設問5
デバッガで、getgenre()関数をアセンブラにして確認。
|
| 図 最初の命令 |
|
| 図 最後の命令 |
XSS検証用サイト作成
前回のつづき。
[ビュー]index.html
静的なHTMLとはことなり、Thymeleafを使ったテンプレート。
テンプレート置き場は、静的なHTML(src/main/static)と異なり、src/main/resources/templages以下。
|
| 図 テンプレートファイル置き場 |
ソースコードは以下のとおり。
タグに、th:xxx属性をうめこむことで、動的に変化する。
実行(表示)すると、以下のとおり。
|
| 図 実行(表示)すると |
次回は
つづき作成。











コメント
コメントを投稿