⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 网络渗透技术配书源码
💻 C
字号:
/* server.c -  overflow demo
*
*  《网络渗透技术》演示程序
*  作者:san, alert7, eyas, watercloud
*
*  存在缓冲区溢出的服务端程序
*/

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

char Buff[1024];
void overflow(char * s,int size)
{
    char s1[50];
    printf("receive %d bytes",size);
    s[size]=0;
    //strcpy(s1,s);
    memcpy(s1, s, size);
    sync(); // 溢出后必须有一些操作产生系统调用,否则直接返回后又会碰到I-cache的问题,shellcode是无法执行的
}

int main(int argc, char *argv[]) 
{ 
    int s, c, ret, lBytesRead; 
    struct sockaddr_in srv; 

    s = socket(AF_INET, SOCK_STREAM, 0); 
    srv.sin_addr.s_addr = INADDR_ANY; 
    srv.sin_port = htons(4444); 
    srv.sin_family = AF_INET; 

    bind(s, &srv, sizeof(srv)); 
    listen(s, 3);

    c = accept(s,NULL,NULL);

    while(1)
    { 
        lBytesRead = recv(c, Buff, 1024, 0);
        if(lBytesRead<=0)    break;

        printf("fd = %x recv %d bytes\n", c, lBytesRead);
        overflow(Buff, lBytesRead);  

        ret=send(c,Buff,lBytesRead,0);
        if(ret<=0)    break;
    }

    close(s);
    close(c);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -