作为我的安全类的一部分,我们必须在安全性较低的ubuntu版本中利用许多漏洞。我解决了所有的挑战,但是我遇到了一个问题,我希望有人可以解决这个问题。
每个挑战都是一个setgid二进制文件,在接管时会为攻击者提供下一级权限。为了添加到该级别的组,可以运行基本上运行adduser <user> <group>
的命令l33t。
在我的一个漏洞中,我的shellcode只是调用了exec l33t,我收到了这条消息: 运行setgid时,printf中的不安全依赖性 /usr/share/perl5/Debian/AdduserCommon.pm第64行。
为了解决这个问题,我创建了一个运行良好的双线bourne shell:
#!/bin/sh
l33t
有谁可以解释为什么我看到了不安全的依赖问题?
答案 0 :(得分:0)
如果您还不知道taint mode:它会导致所有用户输入被标记为“污染”,并且将拒绝输出任何“污染”值(暗示您必须明确地“取消” “不信任的输入。”
无论如何,AdduserCommon.pm
的第64行是sprintf
函数中的dief
...所以我怀疑当你直接致电l33t
时,发生的事情是{ {1}}脚本遇到某种错误,然后在adduser
尝试报告错误时引发污点错误。