3

バックトラック 5 ラップトップでヒープ オーバーフロー エクスプロイトのトレーニングを行っています。ただし、バックトラックにはこれらの攻撃に対する保護があるようです。これは、malloc の割り当てられたチャンクのメタ データを破損しようとしたときに得られるものです。

Starting program: /root/exploit/basicheap `python -c 'print "A"*1024+"\xff\xff\xff\xff"+"\x01\x02\x03\x04"'`
buf1=0x804b008 buf2=0x804b410
*** glibc detected *** /root/exploit/basicheap: double free or corruption (out): 0x0804b410 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b591)[0xb7edf591]
/lib/tls/i686/cmov/libc.so.6(+0x6cde8)[0xb7ee0de8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xb7ee3ecd]
/root/exploit/basicheap[0x80484ee]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb7e8abd6]
/root/exploit/basicheap[0x80483f1]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:01 13377588   /root/exploit/basicheap
08049000-0804a000 r--p 00000000 08:01 13377588   /root/exploit/basicheap
0804a000-0804b000 rw-p 00001000 08:01 13377588   /root/exploit/basicheap
0804b000-0806c000 rw-p 00000000 00:00 0          [heap]
(ETC...)

Program received signal SIGABRT, Aborted.
0xb7fe2430 in __kernel_vsyscall ()

この保護を無効にする方法はありますか? それはカーネルによって処理されますか、それともコンパイル中に gcc によって設定されますか?

4

1 に答える 1

3

freeメッセージは、ヒープの破損を検出する のglibc の実装から来ています。これは、プログラムのコンパイル時のオプションではなく、カーネル チェックでもありません。

試す:

MALLOC_CHECK_=0 /root/exploit/basicheap ...

glibcのmalloc(3)マニュアル ページには、その環境変数を 0 に設定すると、「検出されたヒープの破損は黙って無視される」と記載されているため、ヒープの破損を無視して実行を続けることができますが、代わりに正常にクラッシュする可能性があります。

このチェック コードの詳細を提供するのM_CHECK_ACTIONオプションも参照してください。mallopt(3)

于 2012-11-11T21:04:36.603 に答える