PDA

Просмотр полной версии : Не компилируется сплойт


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