linux下/etc/shadow备忘以及竞争条件获取提权的原理

本文介绍了Linux系统中/etc/shadow文件的默认权限及其重要性,包括如何通过MD5和DES算法加密用户密码,并探讨了suid权限的工作原理及其实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、默认/etc/shadow的权限是000,对于linux下边权限000的文件只能root读取和写入,即使这个文件属于非root用户,该用户也不能读取写入该文件

2、/etc/shadow中保存了用户密码的密文,一般使用的是md5加salt的形式生成,例如明文密码是12345,保存在/etc/shadow 中的是 $1$qY9g/6K4$KTVzAcT.TMgkASuMWh6kJ1,

这一串密文中$1指明了使用md5算法,具体解释可以man crypt查看c语言中crypt函数的介绍,$1$qY9g/6K4$整个部分是salt部分,可以用crypt函数验证:

crypt("12345","$1$qY9g/6K4$");//结果就是$1$qY9g/6K4$KTVzAcT.TMgkASuMWh6kJ1

这样linux中shadow对密码的验证原理也就明了了。当然对于shadow中的密文,不仅可以使用md5的形式,还可以使用crypt原来就支持的des变种算法,例如密码是test,salt是tt,则调用crypt("test", 'tt')得到密文ttXydORJt50wQ,至于这里为什么用了des而不是md5可以看crypt的man文档

3、suid 权限的例子 例如passwd命令 ,passwd命令的权限user是root 但是额外设置了suid权限,这样,非root用户调用passwd就可以得到root的操作权限,所以普通用户使用passwd间接的修改了只有root可以改变的/etc/shadow文件

4、对于suid权限,c中access函数不能检测得到,我也是被坑了才发现的,access 对于文件读写执行权限的检查用的是真实调用者的权限

5、竞争条件获取提权关键点在于suid和symbolink

传送门:点击打开链接(竞争漏洞实验)

注意这个博客中的access用法错误!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值