c-如何使用strcpy将空字节存储到内存地址中



对于大学的安全课程,我需要通过一个仅限数据的漏洞执行shell。

c代码包含一个strcpy((语句,因此我可以用某个缓冲区的内存地址覆盖结构。假设这个缓冲区分配在0xbfffecfc

我需要通过命令行在此缓冲区地址输入值1(0x00000001(。这是通过strcpy((函数实现的,该函数直接写入0xbfffecfc

我已经试过了python -c 'print "x01x00x00x00"但这不起作用,因为x00字节终止了输入。

如何将1的值输入缓冲区?

strcpy用于复制字符串,这些字符串是以null字符结尾的字符序列。因此,它不能复制超过第一个null字符。

CCD_ 7用于复制任意长度的字节序列。

要复制"x01x00x00x00",它表示具有小字节序的四字节1,请使用memcpy(destination, "x01x00x00x00", 4);

要在本机表示中复制值为1的int,请使用memcpy(destination, (int []) { 1 }, sizeof 1);

最新更新