首頁
社區(qū)
課程
招聘
exp不對無法getshell,將offset改為0x28+0x4就可以了,請問這是為什么呢?

老師,請問下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dump  of  assembler  code  for  function  func:
      0x08048454  <+0>:        push      ebp
      0x08048455  <+1>:        mov        ebp,esp
      0x08048457  <+3>:        sub        esp,0x28
      0x0804845a  <+6>:        sub        esp,0x4
      0x0804845d  <+9>:        push      0x50
      0x0804845f  <+11>:        lea        eax,[ebp-0x28]
      0x08048462  <+14>:        push      eax
      0x08048463  <+15>:        push      0x0
      0x08048465  <+17>:        call      0x8048300  <read@plt>
      0x0804846a  <+22>:        add        esp,0x10
      0x0804846d  <+25>:        nop
      0x0804846e  <+26>:        leave  
      0x0804846f  <+27>:        ret      
End  of  assembler  dump.

按照上面的匯編代碼,按您視頻中的方法的話我編寫exp中的offset應(yīng)該是0x28+0x4+0x4,但是這樣exp不對無法getshell,將offset改為0x28+0x4就可以了,請問這是為什么呢?

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

你可能理解錯了(或者是我視頻口誤?),你看我給出的文檔,偏移是0X28+4,而返回地址覆蓋的位置是從0x28+4開始,往后四個(gè)字節(jié),一直到0x28+4+4結(jié)束

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

后面我又看了一下,exp沒有寫錯,然后為了搞清楚問題在哪,我就加了一句printf('test');,重新確定跳轉(zhuǎn)為printf函數(shù)處,竟然成功了,然后我懷疑是跳轉(zhuǎn)位置除了問題,我就把這一句刪除了,重新編譯了一遍,我發(fā)現(xiàn)了問題竟然是這樣的:

1
2
3
4
0000000000400537  <exploit>:
    400537:        55                                             push      rbp
    400538:        48  89  e5                                 mov        rbp,rsp
    40053b:        48  8d  3d  b2  00  00  00         lea        rdi,[rip+0xb2]                #  4005f4  <_

按照課程中直接跳轉(zhuǎn)到exploit處也就是400537即可,但是我沒有成功,我設(shè)置跳轉(zhuǎn)為400538反而成功shell了 這是怎么回事呢?

回復(fù)
Roger 2023-5-23

這就有點(diǎn)玄學(xué)了,這個(gè)也不需要堆棧平衡,按理說跳到這兩個(gè)地方都可以的,不過成功了就行,有時(shí)候就是會出各種奇怪的問題,多嘗試吧!

回復(fù)
Student 2023-5-23

至于第二個(gè)問題關(guān)于\n的事情,我在公司電腦上重新編譯了以前講過的程序,加入了pause,也確實(shí)按回車了,都無法在gdb中看到\n,但是回家用自己筆記本上就成功看到了\n,兩個(gè)環(huán)境的區(qū)別是當(dāng)時(shí)安裝pwntools時(shí)候 發(fā)現(xiàn)沒有cyclic命令,所以家里電腦就重新用pip安裝了一遍pwntools,公司電腦沒有,可能是因?yàn)楦鞣N原因 公司環(huán)境配置有一點(diǎn)問題導(dǎo)致了這個(gè)現(xiàn)象,至少目前是解決了,謝謝您

回復(fù)
Roger 2023-5-23

解決了就好,我之前也遇到過類似問題,最簡單的辦法就是不斷嘗試然后去驗(yàn)證!千萬別怕麻煩,成功解決這個(gè)問題這說明你學(xué)到了課程的精髓,實(shí)踐的多了你會發(fā)現(xiàn)Pwn培養(yǎng)的就是動手能力,在很少的資源下去戰(zhàn)勝重重困難!以后還會遇到很多玄學(xué),都得靠自己去解決。

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