有沒有辦法可以將非ASCII字符發送到使用%s
的scanf?我試圖插入像\x08\xDE\xAD
等十六進制字符(以演示緩衝區溢出)。將非ASCII字符輸入到scanf(「%s」)
輸入不是指向命令行參數,而是指向程序中的scanf。
有沒有辦法可以將非ASCII字符發送到使用%s
的scanf?我試圖插入像\x08\xDE\xAD
等十六進制字符(以演示緩衝區溢出)。將非ASCII字符輸入到scanf(「%s」)
輸入不是指向命令行參數,而是指向程序中的scanf。
當你對'scanf()
'說',可能還有其他數據不僅僅是這個提供。它是否可以運行一個程序,可能是Perl或Python腳本,生成數據並將非ASCII字符寫入程序的標準輸入?如果您需要標準輸入以像終端一樣出現,那麼您應該調查expect
,它可以爲您處理。這是處理這個問題的常用方法。
我假設你想輸入stdin上的任意數據(因爲你使用scanf
來閱讀)。
您可以使用shell創建數據並將其傳送到您的程序中,例如,
printf '\x08\xDE\xAD' | yourprogram
請注意,這隻會只要沒有空白字符被輸送(因爲scanf
有%s
格式停在白色的空間)工作。
如果你使用的是Windows,並且沒有'printf'命令,則創建一個文件並將'stdin'重定向到它:'yourprogram
那麼爲什麼不'fprintf(「\ 0xDE」)'到你的程序的標準輸入? – 2013-02-27 22:44:30
如果您可以在鍵盤上鍵入這些字符,那應該可以工作。否則,重定向,'./a.out
2013-02-27 22:44:39
我的第一個編輯沒有通過。如果輸入是命令行參數,你所說的將會起作用。然而,這不是命令行參數。我想打印的字符不是可打印的。 – asudhak 2013-02-28 00:14:16