我編寫了一個易受緩衝區溢出影響的小C程序。一切工作正常,但我現在跨越了一點問題就來了:在bash中使用NULL字節(用於緩衝區溢出)
我想打電話給其位於地址0x00007ffff7a79450
函數,因爲我傳遞的參數爲緩衝區溢出通過bash的終端(像這樣:
./a "$(python -c 'print "aaaaaaaaaaaaaaaaaaaaaa\x50\x94\xA7\xF7\xFF\x7F\x00\x00"')")
我得到一個錯誤的bash的是忽略了nullbytes。
/bin/bash: warning: command substitution: ignored null byte in input
結果我結束了在內存中的地址錯誤(的0x7ffff7a79450
代替0x00007ffff7a79450
)。
現在我的問題是:我如何產生領先的0,並將它們作爲我的程序的參數?
with * another * program ... –
NULL是帶有_null指針constant_的宏。切勿將它用於'char'。你的代碼沒有問題。你故意調用未定義的行爲,這正是你得到的。案件結案。 – Olaf
請參閱[本答案](https://stackoverflow.com/a/19229243/8051589)以及[This one](https://stackoverflow.com/a/10770953/8051589)。 bash將空字節作爲空間處理。 –