Не компилируется сплойт

Discussion in 'Безопасность и Анонимность' started by FaR-G9, 21 Mar 2008.

  1. FaR-G9

    FaR-G9 Member

    Joined:
    19 Dec 2006
    Messages:
    114
    Likes Received:
    28
    Reputations:
    -4
    Сегодня увидел на милворме такое чудо
    Sun Solaris <= 10 rpc.ypupdated Remote Root Exploit
    http://milw0rm.com/exploits/5282

    только фаил компилироваться не хочет

     
  2. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    ну так а че не понятно то?
    на ворнинги конечно можно внимания не обрящать. но во время работы наверняка будет segmentation fault. а не компилица по той простой причине что в подключаемых тобою библиотеках не существует функции xdr_ypupdate_args.
     
    1 person likes this.
  3. ZipaCna

    ZipaCna Elder - Старейшина

    Joined:
    29 Feb 2008
    Messages:
    60
    Likes Received:
    15
    Reputations:
    3
    Если ты заглянеш в /thread59471.html

    То там ты найдеш решение своих проблем... а именно...

    ypupdate_prot.h

    Code:
    /*
     * Please do not edit this file.
     * It was generated using rpcgen.
     */
    
    #ifndef _YPUPDATE_PROT_H_RPCGEN
    #define _YPUPDATE_PROT_H_RPCGEN
    
    #include <rpc/rpc.h>
    
    /* @(#)ypupdate_prot.x 1.5 90/01/03 Copyr 1990, Sun Micro */
    
    /*
     * Compiled from ypupdate_prot.x using rpcgen
     * This is NOT source code!
     * DO NOT EDIT THIS FILE!
     */
    #define MAXMAPNAMELEN 255
    #define MAXYPDATALEN 1023
    #define MAXERRMSGLEN 255
    
    typedef struct {
    	u_int yp_buf_len;
    	char *yp_buf_val;
    } yp_buf;
    #ifdef __cplusplus 
    extern "C" bool_t xdr_yp_buf(XDR *, yp_buf*);
    #elif __STDC__ 
    extern  bool_t xdr_yp_buf(XDR *, yp_buf*);
    #else /* Old Style C */ 
    bool_t xdr_yp_buf();
    #endif /* Old Style C */ 
    
    
    struct ypupdate_args {
    	char *mapname;
    	yp_buf key;
    	yp_buf datum;
    };
    typedef struct ypupdate_args ypupdate_args;
    #ifdef __cplusplus 
    extern "C" bool_t xdr_ypupdate_args(XDR *, ypupdate_args*);
    #elif __STDC__ 
    extern  bool_t xdr_ypupdate_args(XDR *, ypupdate_args*);
    #else /* Old Style C */ 
    bool_t xdr_ypupdate_args();
    #endif /* Old Style C */ 
    
    
    struct ypdelete_args {
    	char *mapname;
    	yp_buf key;
    };
    typedef struct ypdelete_args ypdelete_args;
    #ifdef __cplusplus 
    extern "C" bool_t xdr_ypdelete_args(XDR *, ypdelete_args*);
    #elif __STDC__ 
    extern  bool_t xdr_ypdelete_args(XDR *, ypdelete_args*);
    #else /* Old Style C */ 
    bool_t xdr_ypdelete_args();
    #endif /* Old Style C */ 
    
    
    #define YPU_PROG ((u_long)100028)
    #define YPU_VERS ((u_long)1)
    
    #ifdef __cplusplus
    #define YPU_CHANGE ((u_long)1)
    extern "C" u_int * ypu_change_1(ypupdate_args *, CLIENT *);
    extern "C" u_int * ypu_change_1_svc(ypupdate_args *, struct svc_req *);
    #define YPU_INSERT ((u_long)2)
    extern "C" u_int * ypu_insert_1(ypupdate_args *, CLIENT *);
    extern "C" u_int * ypu_insert_1_svc(ypupdate_args *, struct svc_req *);
    #define YPU_DELETE ((u_long)3)
    extern "C" u_int * ypu_delete_1(ypdelete_args *, CLIENT *);
    extern "C" u_int * ypu_delete_1_svc(ypdelete_args *, struct svc_req *);
    #define YPU_STORE ((u_long)4)
    extern "C" u_int * ypu_store_1(ypupdate_args *, CLIENT *);
    extern "C" u_int * ypu_store_1_svc(ypupdate_args *, struct svc_req *);
    
    #elif __STDC__
    #define YPU_CHANGE ((u_long)1)
    extern  u_int * ypu_change_1(ypupdate_args *, CLIENT *);
    extern  u_int * ypu_change_1_svc(ypupdate_args *, struct svc_req *);
    #define YPU_INSERT ((u_long)2)
    extern  u_int * ypu_insert_1(ypupdate_args *, CLIENT *);
    extern  u_int * ypu_insert_1_svc(ypupdate_args *, struct svc_req *);
    #define YPU_DELETE ((u_long)3)
    extern  u_int * ypu_delete_1(ypdelete_args *, CLIENT *);
    extern  u_int * ypu_delete_1_svc(ypdelete_args *, struct svc_req *);
    #define YPU_STORE ((u_long)4)
    extern  u_int * ypu_store_1(ypupdate_args *, CLIENT *);
    extern  u_int * ypu_store_1_svc(ypupdate_args *, struct svc_req *);
    
    #else /* Old Style C */ 
    #define YPU_CHANGE ((u_long)1)
    extern  u_int * ypu_change_1();
    extern  u_int * ypu_change_1_svc();
    #define YPU_INSERT ((u_long)2)
    extern  u_int * ypu_insert_1();
    extern  u_int * ypu_insert_1_svc();
    #define YPU_DELETE ((u_long)3)
    extern  u_int * ypu_delete_1();
    extern  u_int * ypu_delete_1_svc();
    #define YPU_STORE ((u_long)4)
    extern  u_int * ypu_store_1();
    extern  u_int * ypu_store_1_svc();
    #endif /* Old Style C */ 
    
    #endif /* !_YPUPDATE_PROT_H_RPCGEN */
    
    и

    ypupdate_prot_xdr.c

    Code:
    /*
     * Please do not edit this file.
     * It was generated using rpcgen.
     */
    
    #include "ypupdate_prot.h"
    /* @(#)ypupdate_prot.x 1.5 90/01/03 Copyr 1990, Sun Micro */
    
    /*
     * Compiled from ypupdate_prot.x using rpcgen
     * This is NOT source code!
     * DO NOT EDIT THIS FILE!
     */
    
    bool_t
    xdr_yp_buf(XDR *xdrs, yp_buf *objp)
    {
    
    	 register long *buf;
    
    	 if (!xdr_bytes(xdrs, (char **)&objp->yp_buf_val, (u_int *)&objp->yp_buf_len, MAXYPDATALEN)) {
    		 return (FALSE);
    	 }
    	return (TRUE);
    }
    
    bool_t
    xdr_ypupdate_args(XDR *xdrs, ypupdate_args *objp)
    {
    
    	 register long *buf;
    
    	 if (!xdr_string(xdrs, &objp->mapname, MAXMAPNAMELEN)) {
    		 return (FALSE);
    	 }
    	 if (!xdr_yp_buf(xdrs, &objp->key)) {
    		 return (FALSE);
    	 }
    	 if (!xdr_yp_buf(xdrs, &objp->datum)) {
    		 return (FALSE);
    	 }
    	return (TRUE);
    }
    
    bool_t
    xdr_ypdelete_args(XDR *xdrs, ypdelete_args *objp)
    {
    
    	 register long *buf;
    
    	 if (!xdr_string(xdrs, &objp->mapname, MAXMAPNAMELEN)) {
    		 return (FALSE);
    	 }
    	 if (!xdr_yp_buf(xdrs, &objp->key)) {
    		 return (FALSE);
    	 }
    	return (TRUE);
    }
    
     
    1 person likes this.