GDB管道输入到调试文件而不使用文件

时间:2017-04-02 18:56:23

标签: debugging gdb pipe

我正在尝试将调试程序传递给python脚本的输出,如下所示:

(gdb) run $(python -c "print('A'*60)")

然而,这是作为参数传递的。

(gdb) run < $(python -c "print('A'*60)")

这会报告错误,因为它用'A'替换​​了正确的部分,并且无法打开具有此名称的文件。

我正在寻找gdb中的一种管道机制。

python -c "print('A'*60)" > input.txt
(gdb) run < input.txt

将是一个解决方案,但我没有创建文件的权限(我正在尝试解决基于堆栈的CTF)

2 个答案:

答案 0 :(得分:1)

您正在寻找:

(gdb) run <(python -c "print('A'*60)")

(这是一个shell重定向功能,而不是GDB重定向功能)。

  

我无权创建文件

系统很少允许您在/tmp中创建文件。

python -c "print('A'*60)" > /tmp/input.txt
(gdb) run < /tmp/input.txt

答案 1 :(得分:0)

这些对我也不起作用:

(gdb) run < <(python -c "print('A'*60)

/bin/sh: Syntax error: redirection unexpected

During startup program exited with code 2.

(gdb) run <(python -c "print('A'*60)")

/bin/sh: Syntax error: "(" unexpected

During startup program exited with code 2.