AFAIK,通过覆盖C变量缓冲区附近的内存来实现缓冲区溢出。这种覆盖用于生成执行命令的shell。
但是,如果运行程序的用户容易受到缓冲区溢出的影响,那么shell会被禁用吗?
/ etc / passwd中:
用户1:X:1000:1000:USER1 ,,,,:/家/ USER1: / bin中/假
sudo -u user1 / usr / bin / programname
答案 0 :(得分:3)
“禁用外壳”仅在您实际登录时 。如果您正在利用已在运行的程序,则无需登录。
答案 1 :(得分:0)
漏洞利用不使用为用户配置的shell - 它们通常包含二进制代码shellcode,它们在功能上等同于原始shell,这意味着它将启动任何选定的可执行文件 - 例如a真正的shell程序。然后欺骗被利用的程序来执行此代码。
网上有许多不同的shell编码,例如不包含字节'\ 0',因此它们将作为C字符串无损地传递,或者只包含可打印字符,有效的unicode字符串等。< / p>