私の友達はCSの1年生の先生です。バッファオーバーフローの悪用を示したいと思います。しかし、最新のディストリビューションは単純なバッファオーバーフローから保護されています。
HOME=`perl -e "print 'A'x269"` one_widely_used_utility_is_here --help
debianで(それを非難する)
Caught signal 11,
現代の商用redhat
*** buffer overflow detected ***: /usr/bin/one_widely_used_utility_is_here terminated
======= Backtrace: =========
/lib/libc.so.6(__chk_fail+0x41)[0xc321c1]
/lib/libc.so.6(__strcpy_chk+0x43)[0xc315e3]
/usr/bin/one_widely_used_utility_is_here[0x805xxxc]
/usr/bin/one_widely_used_utility_is_here[0x804xxxc]
/lib/libc.so.6(__libc_start_main+0xdc)[0xb61e9c]
/usr/bin/one_widely_used_utility_is_here[0x804xxx1]
======= Memory map: ========
00336000-00341000 r-xp 00000000 08:02
2751047 /lib/libgcc_s-4.1.2-20080825.so.1
00341000-00342000 rwxp 0000a000 08:02
2751047 /lib/libgcc_s-4.1.2-20080825.so.1
008f3000-008f4000 r-xp 008f3000 00:00 0 [vdso]
同じ検出器は、インターネットからのより合成的な例では失敗します。
最新の非GPLディストリビューションでバッファオーバーフローをどのように実証できますか(クラスにはDebianはありません)
どうしたらいいの
- スタック内のカナリアワードチェックを無効にしますか?
- strcpy / strcatのバリアントのチェックを無効にしますか?
- 作業バッファオーバーランを使用した例(プレーンC)を記述しますか?