難し過ぎ。しかし断念ではない。 『ハッカープログラミング大全』
とりあえずヒープも終え、メモリセグメントは終わりました。
今後復習するつもりです。 しかし、何度読んでも難しい物は難しいです。
だから、違う本で出来るだけ知識を蓄えた後に、もう一度も戻ろうと思います。
そこで!
紹介したい本が
『ハッカー・プログラミング大全』
この本は かの有名な 『愛甲健二』さんが書かれた、本です。
僕の中で一番尊敬しています。
はぁい。ʕ̡̢̡ʘ ͜͡ʘ̲̅ʔ̢̡̢
⬆きもすぎ。
さっきいった通り、僕はあくまで ヒープ(heap), スタック(stack)をちゃんと理解したい
からこの本を手に取った訳なので、
スタックとヒープが書かれている所から見ていこうと思うのですが、
まさかいきなり root権限の取り方 とかはじまるとは思ってもいなかったですねぇ。
バッファオーバーフローしてroot権限を取るのかとかいまいちわからないので、
読んでみた所、setuid というのがありまして、 これがUNIX系ではroot権限を変えれると。
まぁ、使い方を誤ったら危ないですが、普通に考えたら使いやすいとか…。
☎
☎┓ | ┏☎
☎┓(^o^)┏☎
☎┛ | ┗☎
まぁ、そんなことする人いないので安心です。
うん。ほとんどスタックのことが書かれていない!!
って思ったら、次が スタックのことでしたねぇ。
stack buffer overflow みたいな?
簡単に言うと、
与えられたスタック以上に入力すると、すると
『セグメンテーション違反です』って出ます。
僕のLinuxでは、
ってかんじですねぇ。 分かりやすく
memory map なんかも書いてくれてますねぇ。
Backtraceってなんだっけ?
まぁ、とりあえず
*** stack smashing detected ***
⬆これが多分 『セグメンテーションエラー』ってやつですね。
あっ、ちなみに
./ex1 は ./a.out 的なやつです。
gcc -o ex1 ex1.c
だったはずです。
その右の `python -c 'print "A"*600'`
っていうのは Pythonistaを 強調したいというかぁw
この本では ./ex1 `perl -e 'print "A" x 600'`
って書いてあります。
アルファベットの x が カケるって斬新ですね。
とりあえず、こういうバグを使ってどのようにユーザが用意したプログラムを実行させるのかは次項です。
感想:
セグメンテーションエラーになったら
バッファオーバーフロー出来てないような?