我正在尝试将调试程序传递给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)
答案 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.