在內存中,地址是上低下高,利用內存時是從內存高位開始利用。但在已經定義了的內存小塊內存中,內存卻是從上到下(即從低址向高址)利用。
在完成實驗的過程中,要注意地址的情況,內存數據與數值數據是不同的。在數值數據中,我們從左到右讀,但在內存數據中,它是從右到左兩個一讀。比如數值數據0x12345678,轉變為內存數據就是0x78563412。
這個實驗實際上就是巧用字符串截斷符null。
在實驗中要弄清楚地址,地址一搞通,實驗就差不多完成了

棧幀布局:
覆蓋鄰接變量:
修改鄰接變量成功:

在這個實驗中,如果你的輸入字符串字符小于1234567,那么strcmp()函數會返回 -1,-1會將authenticated的內存改為0xFFFFFFFF,這時字符數組再溢出的話,authenticated的內存會被改為0xFFFFFF00,這樣將不能通過驗證,顯示incorrent password!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。