首页
社区
课程
招聘
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应该是0x28+0x4+0x4,但是这样exp不对无法getshell,将offset改为0x28+0x4就可以了,请问这是为什么呢?

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

你可能理解错了(或者是我视频口误?),你看我给出的文档,偏移是0X28+4,而返回地址覆盖的位置是从0x28+4开始,往后四个字节,一直到0x28+4+4结束

回复 已采纳
Student 2023-5-23

后面我又看了一下,exp没有写错,然后为了搞清楚问题在哪,我就加了一句printf('test');,重新确定跳转为printf函数处,竟然成功了,然后我怀疑是跳转位置除了问题,我就把这一句删除了,重新编译了一遍,我发现了问题竟然是这样的:

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  <_

按照课程中直接跳转到exploit处也就是400537即可,但是我没有成功,我设置跳转为400538反而成功shell了 这是怎么回事呢?

回复
Roger 2023-5-23

这就有点玄学了,这个也不需要堆栈平衡,按理说跳到这两个地方都可以的,不过成功了就行,有时候就是会出各种奇怪的问题,多尝试吧!

回复
Student 2023-5-23

至于第二个问题关于\n的事情,我在公司电脑上重新编译了以前讲过的程序,加入了pause,也确实按回车了,都无法在gdb中看到\n,但是回家用自己笔记本上就成功看到了\n,两个环境的区别是当时安装pwntools时候 发现没有cyclic命令,所以家里电脑就重新用pip安装了一遍pwntools,公司电脑没有,可能是因为各种原因 公司环境配置有一点问题导致了这个现象,至少目前是解决了,谢谢您

回复
Roger 2023-5-23

解决了就好,我之前也遇到过类似问题,最简单的办法就是不断尝试然后去验证!千万别怕麻烦,成功解决这个问题这说明你学到了课程的精髓,实践的多了你会发现Pwn培养的就是动手能力,在很少的资源下去战胜重重困难!以后还会遇到很多玄学,都得靠自己去解决。

回复
零基础入门pwn
  参与学习     1766 人
  提问次数     35 个
《零基础入门pwn》,短时间内踏入漏洞利用的大门,快速成为一名合格的pwn题选手
我的问答 领取收益
0
我的提问
0
我的回答
0
学习收益