我正在学习计算机安全并且对命令有疑问。我有一个易受攻击的 Web 服务器,我可以通过使用 telnet 命令来利用缓冲区溢出,然后发送带有超长 URL 的 http get。URL 将溢出缓冲区。我知道这肯定有效。但是现在,我想使用 netcat 来自动化这个过程。到目前为止,我有
netcat localhost 8080 < payload1
我将它发送到本地主机,因为我在同一台计算机上运行服务器和攻击。Payload1 当前是格式错误的 HTTP Get 语句。但是,服务器无法理解这一点,因为它无法打开文件以查看 HTTP Get 语句。因此,我的问题是:如何使 HTTP Get 语句可执行,或者如何让服务器识别文件中的 HTTP Get?
谢谢!
编辑:似乎包含 uri 的 req 是 0。或者至少是当我用 GDB 检查它时。这是给我一个问题的代码行:
if (req->uri == NULL || req->method == NULL ||
req->headers == NULL || req->version == NULL) {
return 0;
}
GDB 在 if 语句中说这是一个分段错误。
我知道这可能没有多大意义,因为来自服务器的其余代码不存在。但是,netcat 语句发送的文件是:
get /aaaaaaaaaaaaAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAddddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa http/1.1
如果我使用 telnet 传输它,服务器确实会崩溃,所以我知道它是 netcat 的问题。有一个声明说payload1需要是带有CRLF结束行的DOS格式。为了检查这一点,我将文件传输到 Windows 机器并且它正确显示但是我想知道是否有另一种方法来检查这个?