從註釋繼續,不知道什麼是./myProgram
使它有點難以猜測,但也有嘗試給你幾個順理成章之事報道。
正如您所指出的那樣,您需要將十六進制輸入作爲第一個參數傳遞給./myProgram
,而不是將它傳遞給stdin
上的程序。您正確地注意到python -c "print '\x48\x65\x6c\x6c\x6f'" | ./myProgram
因爲這個原因失敗。如您所知,管道到程序重定向stdout
的初始過程到stdin
後續過程,而不是作爲它的一個參數。
那就是過程替換可以提供幫助。當在$(...)
(或反斜槓'...'
內的舊格式)中放置進程時,程序的輸出將被返回。因此,您可以通過提供的python -c "print '\x48\x65\x6c\x6c\x6f'"
輸出作爲參數:
./myProgram $(python -c "print '\x48\x65\x6c\x6c\x6f'")
最後,如果myProgram
簡直就是尋找字符串格式十六進制輸入,則沒有理由多個逃逸。只需提供十六進制數字的字符串表示就足夠了。像下面這樣:
./myProgram 0x48656c6c6f
我很高興其中的一個建議是你所需要的「銀彈」。祝您的外殼使用順利。如果您還有其他問題,請告訴我們。
解析程序中的文本 – Jiahao
您嘗試過'./myProgram 0x48656c6c6f'嗎? (這是很難猜測不知道'myProgram'是什麼。)另一種選擇,如果這是一個shell練習是'./myProgram $(python -c「print'\ x48 \ x65 \ x6c \ x6c \ x6f'「)' –
Thanks @ DavidC.Rankin that works!不能將它設置爲接受的答案,雖然因爲它是一個評論........ – Friedpanseller