首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pwntools中向进程/服务器发送eof?

如何在pwntools中向进程/服务器发送eof?
EN

Stack Overflow用户
提问于 2021-02-02 21:48:01
回答 1查看 1K关注 0票数 0

我试图让read在程序中返回0( while循环中的那个),然后正确地执行第二个read,这在CTRL-D中非常有效。然而,我想在pwntools (p = process("./test"))中做同样的事情。我已经尝试用p.sendline("\x04")发送eof字符,但不起作用。该程序接受类似于"\x0a\x04"的输入。p.send()不会改变任何东西。这是我的测试程序:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   char buf[24];
   while(1) {
      if(read(0,buf,16)==0) {
         break;
      }
   }
   read(0,buf,16);
   return 0;
}

我希望任何人都能帮助我。

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 04:03:43

这取决于连接的类型。

如果是管道或插座,则除了关闭连接之外,没有其他方法。

但是如果它是一个伪终端(您可以使用process(..., stdin=PTY)在pwntools中强制执行它),您可以使用操作系统的终端行编辑功能(有关规范模式的描述,请参阅termios(3) ),您可以向它发送一个带有p.send(b'\4')的EOF标记(即Ctrl+D)。

因此,您的最终代码应该如下所示:

代码语言:javascript
复制
from pwn import *

p = process('./test', stdin=PTY)
p.send(b'\4')  # mind the b before binary data literal (text is not bytes)

# then something else maybe
p.interactive()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66011026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档