とりあえず
・gdbとターミナル実行時のアドレスの違いを確認するときは
プロセスIDでのデバッグを使う
# ps -u root | grep bypass_server
# gdb -p [PID]
・どのプログラムにオプションをつけるべきで、つけないべきか
気をつけないと想定の動きにならない
(スタックプロテクターとかデバッグとか)
・正直今回は本に書いてある内容に惑わされたところもあった
shellcodeの長さが違ったり
・あとアセンブリ作成時にこれも間違えた
誤 echo "/bin/sh" | od -tx8z
正 echo "/bin//sh" | od -tx8z
たしかにリバースシェルとして動いてはいたけど
これが原因でshellcodeの長さとかに影響が出てしまってた
とりあえず、なんとか、ほんまに文字通り試行錯誤した上で
夜勤前になんとかリバスシェルのペイロードが成功してよかった
多分こんなに時間かかるはずではなかったやろうけど
時間かかったことで基本的なコマンド操作にはだいぶ慣れた
あとはまぁ付録読んだらいいと思う