milohoffman
Сообщений: 1
Оценки: 0
Присоединился: 2011-01-09 13:36:26.530000
|
Вечер добрый, написал тут тестовую программку из нескольких строк, чтобы ее помучить. Под gdb нашел адрес, куда удобно будет передать управление (сначала пробовал попасть на nop'ы, но муторно было, нашел руками). вобщем подготавливаю данные, передаю ей, а она с сегфолтом вываливается… хм… ладно. запускаю под gdb, ставлю бряк на этот самый адрес, run, оп, попался! все-таки под отладчиком управление успешно передалось и шеллкод отработал: (gdb) disas 0xbffff605,+20
Dump of assembler code from 0xbffff605 to 0xbffff619:
0xbffff605: lea 0xc(%esi),%edx
=> 0xbffff608: int $0x80
0xbffff60a: call 0xbffff5f0
0xbffff60f: das
0xbffff610: bound %ebp,0x6e(%ecx)
0xbffff613: das
0xbffff614: insb (%dx),%es:(%edi)
0xbffff615: jae 0xbffff617
0xbffff617: psadbw %mm7,%mm7
End of assembler dump.
(gdb) si
process 11273 is executing new program: /bin/ls
[Thread debugging using libthread_db enabled]
core main nopattack nopattack.c stackoverflow.tar.gz try try.c victim victim.c
Program exited normally. однако не хочет работать в свободном плавании… вот анализ коредампа: [milo@milo stackoverflow2]$ gdb ./victim core
Program terminated with signal 11, Segmentation fault.
#0 0xbffff5ed in ?? ()
(gdb) info registers
eax 0x0 0
ecx 0x0 0
edx 0xbf9b1756 -1080354986
ebx 0xb771dff4 -1217273868
esp 0xbf9af410 0xbf9af410
ebp 0xbffff5ed 0xbffff5ed
esi 0x0 0
edi 0x0 0
eip 0xbffff5ed 0xbffff5ed
eflags 0x210246 [ PF ZF IF RF ID ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
(gdb) x 0xbffff5ed
0xbffff5ed: Cannot access memory at address 0xbffff5ed есть две версии этой ошибки: 1. память уже очистилась и, соответственно, я не могу посмотреть ее содержимое; 2. память не доступна на исполнение и это вызывает падение программы… попробовал с помощью ht изменить атрибуты секции данных (+execute), тоже не помогло… есть версия, что атрибуты не там менял (признаюсь честно, тут я немного не силен - в какой секции стэк находится…). в любом случае за совет или подзатыльник (только не переусердствуйте) буду благодарен.
|