-1

AFAIK, a buffer overflow is achieved by overwriting memory adjacent to a C variable's buffer. This overwriting is used to spawn a shell which executes commands.

But what if the user that is running the program vulnerable to a buffer overflow has the shell disabled ?

/etc/passwd:

user1:x:1000:1000:user1,,,,:/home/user1:/bin/false

sudo -u user1 /usr/bin/programname

4

2 回答 2

3

“Shell disabled”仅在您实际登录时才重要。如果您正在利用已经运行的程序,则无需登录。

于 2012-12-19T17:05:18.650 回答
0

漏洞利用不使用为用户配置的 shell——它们通常包含一个二进制代码shellcode,它在功能上等同于原始 shell,这意味着它将启动任何选定的可执行文件——例如一个真正的 shell 程序。然后欺骗被利用的程序来执行此代码。

网络上有许多不同的 shellcode,例如不包含字节 '\0',因此它们将作为 C 字符串安全地传递,或者仅包含可打印字符、有效的 unicode 字符串等。

于 2012-12-19T17:24:10.167 回答