I typically run my program with:
perl -e 'print "A"x200' | ./vuln_prog
The stdin is consumed by a gets() function in C++.
If this were just a command argument, I could open gdb by doing:
gdb ./vuln_prog
run $(perl -e 'print "A"x200')
However, my scenario is not a command argument, but rather input (STDIN?). How would I debug this in gdb? I've tried a bunch of options, but nothing seems to really work.
I would normally just run gdb on the process, and when it prompts for user input, type it in, however I'm not wanting to type just "A". I want to type all chars from \x00-\xff, which I can't type.
gets? I mean sometimes it's acceptable (like if you're just writing a quick program to test something, or if the program will only be run with trusted input) but I'm curious.getsintentionally used because it was vulnerable, like as part of a possible solution to the challenge?r < <(perl -e 'print "A"x200')(as the question is closed, not as answer)