实验准备
- Ubuntu16.04
- vulp.c
预备知识
竞态条件漏洞TOCTTOU,也就是特权程序在使用资源前会做一些检查,如果攻击者可以在条件检查通过后和资源访问之前立即改变条件,那么前面的检查就变得无效了,这将导致特权程序能够访问不该访问的资源,利用这种方法,攻击者可以利用特权程序修改一个受保护的文件。
开始实验
- 存在漏洞的程序vulp.c。
#include <stdio.h> #include <unistd.h> int main() { char * fn = "/tmp/XYZ"; char buffer[60]; FILE *fp; /* get user input */ scanf("%50s", buffer ); if(!access(fn, W_OK)){ fp = fopen(fn, "a+"); fwrite("\n", sizeof(char), 1, fp); fwrite(buffer