asu_paraの日常

日々感じたことをまとめて投稿するときに使います

2021/6/7 RiST/LT pwn入門以前の事前課題

RiSTのみなさん!こんにちわ!そうでない人も!!ただいまーーあすぱらだよ!

 

6月7日にLTやるよー。ということで内容はpwnについて扱おうと思っておりますがもしかしたら一年生にとってはハードルが高いかもしれないと思ったので事前課題を準備します。これは絶対的なわけではないですがだしてくれるとうれしいです。二年生も復習になるでしょう。

 

PDFでもテキストでもdiscordのDMにでも送ってくれたらみんなの分見ます。LTでは提出してくれた人の解答を説明に採用したり比較したりします。みんなのちからで新しいLT形式の実現を願いたいところです。

 

C言語には脆弱性があります。もともと堅牢なシステムソフトウェアをつくるためにできた言語ではありません。C言語は直接メモリを扱うことができます。なので勉強になります。学校でも採用されているのはそういう理由なのかもしれません。しかし、その扱いの制御に対する手段はRustみたいに静的な挙動も、Javaのように動的な挙動もないというのが火種になっています。そんな根本部分にある古典的なセキュリティホールについて当日は探検していきましょう。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

問1 スタックバッファのオーバーランが悪用するメカニズムについて説明してください。一つ攻撃例をあげてそれについて説明しても構いません。その際、例としてあげるならreturn-to-libc攻撃について説明してください。分量はどのくらいでもいいです。ひとことでもわかったところまででも....でもこれはメモリ割り当ての図を使って説明したほうがよさそうです。図やCのソースコード、文章を織り交ぜるとよりよいでしょう。

 

問2 Cにはたくさんのprintfがあります。printfはどのようなときに使うと安全ではないのでしょうか?説明できるだけやってみてください。ん?わかんない?しょうがないなあ....脆弱性のあるコードを一つ示してみるからそれを参考に考えてみるっていうのはどうよ.....???

>||

#include <stdio.h>

int main() {
    char buffer[1024];
    gets(buffer);
    printf(buffer);
    printf("\n");
    return 0;
}

||<

 char gets %s %x %n について調べてみましょう。それがヒントです。

 

問3 Canaryとはなんでしょうか?言葉だけでも図を使ってもいいです。簡潔に説明してみてください。

 

問4(追加問題)Canaryはバッファーオーバーフローしたときにプログラムがクラッシュするのを防ぎますか?

 

 

たくさん待ってます!!!!忙しいとは思いますが。。。あすぱらはいつでもいいのでとにかく待ってます。