实验设置 平台:Ubuntu Seed 16.04 任务1 修改var值为0x66887799 ①首先编译prog1程序 ②关闭ASLR,并利用printf函数的格式化漏洞,打印程序的栈信息。可以看到在打印第5个%08x时出现变量var的值。 ③开始构造输入,首先需要将var的值改为0x66887799。采用%hn进行分步修改(一次覆盖2个字节)。根据prog1的输出可以知道var的地址为0xbfffed54,由于计算机一般是小端存储,所以0x6688需要覆盖0xbfffed56开始的两个字节,0x7799则覆盖0xbfffed54开始的两个字节。 ④首先输入需要先通过$(printf "\x56\xed\xff\xbf@@@@\x54\xed\xff\xbf")构造%hn写入的内存地址,并且在两个需要写入的地址中间用@@@@分割,这个主要是为了插入%.nx来调整第二个地址写入的值,其中n是两个写入值的差值。 ⑤接下来需要构造差值,输入除了刚开始的地址外(12 bytes),还有4个%.8x(32 bytes)调整va_list,那么输入已经有了44个字符,而需要写入的值是0x66
Axuanz
Updating as per fate.