提問者:tboom 2020-4-2
老師您好,我想問一下
push
0x68
0x732f2f2f
0x6e69622f
為什么不能用
0x68732f
代替?這樣讀出來應該是/bin/sh,并沒有在中間添加00也不需要添加/。我這樣嘗試的時候發(fā)現(xiàn)結果有$符號,但是運用ls并沒有結果而是直接退出了。請問為什么這樣不可以呢?
這個問題問的好,在很多漏洞利用場景中, shellcode 的內容將會受到限制,例如你不能輸入 \x00 這個字符,編輯框不能輸入 \x0d \x0a這樣的字符,0x68732f2f2f6e69622f表示的ASCII是 hs///nib/ ,而x68732f6e69622f表示的是hs/nib/,表面上看只是兩個反斜杠的區(qū)別,但這里需要保證binsh要以00結尾,因此需要在匯編中寫入代碼手動將其調整為 0,所以要用第一種
這個問題挺重要的,給你更新了一節(jié)課,你可以看一下,http://www.the-white-rooms.com/book-57-955.htm