Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   *nix (https://forum.antichat.xyz/forumdisplay.php?f=43)
-   -   Не компилируется сплойт (https://forum.antichat.xyz/showthread.php?t=64939)

FaR-G9 21.03.2008 03:19

Не компилируется сплойт
 
Сегодня увидел на милворме такое чудо
Sun Solaris <= 10 rpc.ypupdated Remote Root Exploit
http://milw0rm.com/exploits/5282

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

Цитата:

gcc ypk.c -o ypk.bin
ypk.c: In function `main':
ypk.c:104: warning: passing arg 3 of pointer to function from incompatible pointer type
ypk.c:104: warning: passing arg 4 of pointer to function from incompatible pointer type
ypk.c:104: warning: passing arg 5 of pointer to function from incompatible pointer type
ypk.c:104: warning: passing arg 6 of pointer to function from incompatible pointer type
ypk.c:54: warning: return type of `main' is not `int'
/tmp/ccRr7A5D.o(.text+0x1a5): In function `main':
: undefined reference to `xdr_ypupdate_args'
collect2: ld returned 1 exit status

zythar 21.03.2008 08:34

ну так а че не понятно то?
на ворнинги конечно можно внимания не обрящать. но во время работы наверняка будет segmentation fault. а не компилица по той простой причине что в подключаемых тобою библиотеках не существует функции xdr_ypupdate_args.

ZipaCna 21.03.2008 14:25

Если ты заглянеш в http://forum.antichat.ru/thread59471.html

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

ypupdate_prot.h

Код:

/*
 * 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

Код:

/*
 * 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);
}



Время: 15:13