首頁
社區(qū)
課程
招聘
關(guān)于代碼代替的問題

提問者:
tboom 2020-4-2

 

老師您好,我想問一下

1
2
3
push  0x68
push  0x732f2f2f
push  0x6e69622f

為什么不能用

1
2
push  0x68732f
push  0x6e69622f

代替?這樣讀出來應(yīng)該是/bin/sh,并沒有在中間添加00也不需要添加/。我這樣嘗試的時候發(fā)現(xiàn)結(jié)果有$符號,但是運(yùn)用ls并沒有結(jié)果而是直接退出了。請問為什么這樣不可以呢?

收藏
2條回答
Roger 2023-5-23

這個問題問的好,在很多漏洞利用場景中, shellcode 的內(nèi)容將會受到限制,例如你不能輸入 \x00 這個字符,編輯框不能輸入 \x0d \x0a這樣的字符,0x68732f2f2f6e69622f表示的ASCII是 hs///nib/ ,而x68732f6e69622f表示的是hs/nib/,表面上看只是兩個反斜杠的區(qū)別,但這里需要保證binsh要以00結(jié)尾,因此需要在匯編中寫入代碼手動將其調(diào)整為 0,所以要用第一種

回復(fù) 已采納
Roger 2023-5-23

這個問題挺重要的,給你更新了一節(jié)課,你可以看一下,http://the-white-rooms.com/book-57-955.htm

回復(fù)
零基礎(chǔ)入門pwn
  參與學(xué)習(xí)     1788 人
  提問次數(shù)     35 個
《零基礎(chǔ)入門pwn》,短時間內(nèi)踏入漏洞利用的大門,快速成為一名合格的pwn題選手
0
我的提問
0
我的回答
0
學(xué)習(xí)收益