簡體   English   中英

緩沖區溢出

[英]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是通過按下controlA鍵獲得的,但 shell 的行編輯器通常會將其解釋為將光標移動到行首的命令......所以你可以試試這個:

./a.out $(printf '1111111111111111111111111111\001')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM