gpt4 book ai didi

创建 TCP 服务器来托管 ELF 文件

转载 作者:行者123 更新时间:2023-11-30 16:14:29 26 4
gpt4 key购买 nike

我已经使用 docker 设置了一个 TCP 服务器,用于我将要主办的 CTF 竞赛。问题是,当我 nc (netcat) 进入本地主机上正在运行的 TCP 服务器时,客户端不会收到可执行文件的输出。

我过去从未设置过 TCP 服务器,所以这对我来说是新的。

Bash 脚本

#!/bin/sh -e

exec tcpserver -v -P -R -H -l 0 0.0.0.0 1337 ./buff

短 C 脚本

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define FLAG ""

int main() {
int safe = 0xFACE0FF;
char name[32] = "";
fprintf(stderr, "So you wanna take my flag? ");
read(0, name, 0x32);
if (safe == 0xdec0de) {
fprintf(stderr, "Here's my flag: %s", FLAG);
} else {
puts("Goodluck dude!");
}
}

我希望客户端读取并发送输入。来自上面的 C 脚本。

上面的 bash 脚本创建了一个成功的 TCP 服务器并监听端口 1337 上的任何传入连接,但是当客户端连接到 TCP 服务器时,它们只能传递输入。

最佳答案

查看 read() 的手册页。读取函数将等待,直到读取给定的字节数 - 在您的情况下,您指定 0x32 字节(这可能不是您所期望的)。这就是为什么它看起来没有输出 - 它在继续之前等待 50 个输入字符。

您可能需要考虑getline()或类似的东西。

此外,请检查以确保在变量声明上使用与缓冲区大小相同的基础。

关于创建 TCP 服务器来托管 ELF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57633578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com