首页
论坛
课程
招聘

分享:
漏洞分析

零基础入门PWN

发布时间: 2020-2-15
最后修改: 2020-4-3
作者: Roger
阅读: 2148
难度: 初级
469    100%    299
学生数    好评度    价格
购买后可查看所有课程!

上一节 :
下一节 :
章节评论 (4)
suaqer 2020-3-9
 举报
@Roger  师傅,我在学习的时候遇到以下两个问题
1.  exp问题,我这里利用exp的时候确实出现了$符,但是执行命令的时候就报错了,比如执行`ls`,就显示“Process  './test'  stopped  with  exit  code  -11  (SIGSEGV)  (pid  21229)”,然后就退出了
2.  就是调试exp的时候,我发现单步跟到回车符`\n`被压入`rcx`的时候,您这边显示的是"0xa('\n')",而我这边显示的只有"0xa",并不能看到回车符,是环境配置的有问题吗
【讲师回复】 第一个问题:报错可能是你exp写的有问题,你再调试调试看看,实在不行就跳过,过一段时间可能就解决这个问题了。第二个问题:我调试的时候是按了回车键,所以会有换行符,不知道你那边是否用的是回车键,这个问题你换个程序调试一下看看是否还有,因为pwn的问题比较多,导致的原因也比较多,你百度看看吧
2020-3-9
suaqer 2020-3-9
 举报
@Roger  后面我又看了一下,exp没有写错,然后为了搞清楚问题在哪,我就加了一句`printf('test');`,重新确定跳转为printf函数处,竟然成功了,然后我怀疑是跳转位置除了问题,我就把这一句删除了,重新编译了一遍,我发现了问题竟然是这样的:

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了  这是怎么回事呢?
【讲师回复】 这就有点玄学了,这个也不需要堆栈平衡,按理说跳到这两个地方都可以的,不过成功了就行,有时候就是会出各种奇怪的问题,多尝试吧!
2020-3-10
suaqer 2020-3-9
 举报
@Roger  至于第二个问题关于`\n`的事情,我在公司电脑上重新编译了以前讲过的程序,加入了pause,也确实按回车了,都无法在gdb中看到\n,但是回家用自己笔记本上就成功看到了\n,两个环境的区别是当时安装pwntools时候  发现没有cyclic命令,所以家里电脑就重新用pip安装了一遍pwntools,公司电脑没有,可能是因为各种原因  公司环境配置有一点问题导致了这个现象,至少目前是解决了,谢谢您
【讲师回复】 解决了就好,我之前也遇到过类似问题,最简单的办法就是不断尝试然后去验证!千万别怕麻烦,成功解决这个问题这说明你学到了课程的精髓,实践的多了你会发现Pwn培养的就是动手能力,在很少的资源下去战胜重重困难!以后还会遇到很多玄学,都得靠自己去解决。
2020-3-10
ning壹零貳贰 2020-5-18
 举报
@suaqer    @Roger      我也发现了同样的问题,按照课程中直接跳转到exploit处也就是400537即可,但是我没有成功,我设置跳转为400538反而成功shell了  。  太奇怪了。
【讲师回复】 这个我也不清楚了,目前出现这个问题的好几个同学给我反应的结果都各不相同。这个无所谓,这节课的重点是gdb附加,能掌握gdb附加调试的方法即可
2020-5-19
沪ICP备16048531号-1
沪公网安备 31011502006611号