pythonpipefile-descriptorctfpwntools

How to write data to a specific fd using Python Pwntools


I'm trying to use pwntools's process and to write a string to stdin and stderr

I want to learn what is the correct way to achieve this behavior instead of trying to find weirds ways to do this myself (running a differnet process that writes to the pipe or something like that) Thanks!

In the documentation there is a parameter to process of stdin and stdout but I do not understand how to use it correctly, I tried using open("<named pipe">) since I saw in the documentation that a file object is a valid argument, but then rememeberd that it will not work since writing is blocked until someone starts reading.


Solution

  • Just so there’s no magic: you can only write data into a process’s STDIN; STDERR is always an output FD you can only read or redirect. If you want to feed your program on fd 2 (e.g. it actually does an os.read(2,…)), you must dup your stdin‐pipe onto fd 2 in the child before exec. Otherwise just use send/sendline to write to STDIN and stderr=PIPE (or a file) to capture its error‐output.