[英]Buffer Overflow
我正在嘗試創建緩沖區溢出。 一個函數中有三個變量——一個 int 和兩個數組。 這兩個數組的長度均為 14 個字符。 int 在函數中初始化為 0,但我試圖將其更改為 1。我從終端運行程序並輸入一些輸入以分配給第二個數組。
因此,當我運行程序時,我正在做這樣的事情:
./a.out 11111111111111111111111111111
這是 29 個 1。 所以這會溢出兩個數組,使它們都只是 1,我想將第 29 個“1”放入 int,但由於某種原因,它被轉換為十進制數,即“49”。 我如何能夠在不轉換的情況下使用緩沖區溢出將“1”放入該 int 中?
我無法輸入 1 的十進制版本,因為它在 ascii 中是不可打印的字符。
字符1
的 ASCII 值為0x31
,十進制為49
。 你走在正確的軌道上。
無論如何,您正在做的事情會調用未定義的行為,但預期的行為是未定義行為的一種形式。
要嘗試將整數更改為1
,您可以運行
./a.out 1111111111111111111111111111^A
其中^A
是通過按下control和A鍵獲得的,但 shell 的行編輯器通常會將其解釋為將光標移動到行首的命令......所以你可以試試這個:
./a.out $(printf '1111111111111111111111111111\001')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.