CGfsb笔记
作者:互联网
先讲一下的我对格式化字符串漏洞的理解
printf("aaaa.%08x.%08x.%08x.%08x")
在栈去的分布:
1 |
0061FE30 0061FE4C |format = "AAAA%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x" |
0x0061FE4C的位置内容aaaa,可以算出偏移的参数位置,所以那个便宜位置的参数我们的可以控制的
那么我们把aaaa换成一个地址 然后把%x换成%s
那么在0x0061FE4C位置就变成<%s> = 一个任意地址 就完成了任意地址读
在说说任意地址写,就有pwn.fmtstr_payload
fmtstr_payload(offset, writes, numbwritten=0, write_size='byte')
理解:fmtstr_payload(偏移,{key内存地址,value值})
第一个参数表示格式化字符串的偏移;
第二个参数表示需要利用%n写入的数据,采用字典形;
第三个参数表示已经输出的字符个数,这里没有,为0,采用默认值即可;
第四个参数表示写入方式,是按字节(byte)、按双字节(short)还是按四字节(int),对应着hhn、hn和n,默认值是byte,即按hhn写。
这个题偏移为10就直接写poc
标签:CGfsb,08x,.%,笔记,fmtstr,参数,偏移,byte 来源: https://www.cnblogs.com/haozhizhi/p/10919390.html