首页
社区
课程
招聘
[原创][分享]Pwn从入门到放弃(一)
发表于: 2019-12-28 00:06 13617

[原创][分享]Pwn从入门到放弃(一)

2019-12-28 00:06
13617

最近打算系统的学习Pwn这块内容,刚好前段趁双11购买了不少网课,于是在某春秋上看了Atum的《CTF PWN选手的养成》课程,课程里面布置了不少作业,因此打算开个系列帖子,将自己在做作业时的一些心得体会分享出来,也算是自己的学习笔记吧。

这是一道Defcon 2015 Qualifier上的PWN题目,名叫r0baby

第一步:首先拿到题目,先checksec看一下:

图片描述

程序为64位小端,并且开启了NX(堆栈不可执行)、PIE(地址随机化ASLR)和Fortify保护(一种增强保护机制,防止缓冲区溢出攻击,会替换诸如memcpy、memset、strcpy等危险函数)。

第二步:运行看看:

图片描述
发现有4个选项:
1、获得libc地址
2、获得libc中某个函数的地址
3、向栈中输入小于1024长度的任意数据
4、退出程序
先选择1看看:
图片描述
再选择2,输入system看看:
图片描述
再选择3,随便输入点东西看看:
图片描述
发现输入了若干字符,居然报错了(熟悉的Segmentation fault)

第三步:用gdb看看究竟在哪里崩了:
图片描述
可以看到崩溃在了0x555555554eb3:ret的地方
通过pattern_offset计算,可以得知溢出点在8个字节处:
图片描述

第四步:将程序丢到IDA中,发现函数并不多,一眼便可以看到main入口函数,F5伪代码可以看到,程序会调用系统默认的libc.so.6这个库
图片描述

通过运行libc.so.6,可以获得当前系统运行的libc版本:

图片描述

1、由于开启了ASLR,因此需要知道当前执行时的system和'/bin/sh'的地址
2、知识点:64位系统中函数传参使用的寄存器顺序是RDI,RSI,RDX,RCX,R8,R9
3、在调用system函数时,先给RDI寄存器赋值为'/bin/sh'
4、因此需要使用pop rax; pop rdi; call rax这样顺序的一条指令
5、可以通过实时运行时的system地址-system偏移地址,从而得到system的基址,而后即可通过system基址+'/bin/sh'和ppc的偏移地址,即可得到它们两个的实时地址
6、栈溢出布局如下:
图片描述

第六步:利用ROPgadget找到合适的ppc地址:

图片描述

#最终利用EXP代码:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-12-30 20:51 被bugchong编辑 ,原因: 修改部分描述
上传的附件:
收藏
免费 3
支持
分享
最新回复 (23)
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
如果想学习PWN 的内容,何必要买课??如果LZ 不介意的话,去ctfrime.org搜索队伍pureSec,一起学习啊,全都是免费的
2019-12-28 08:55
0
雪    币: 3188
活跃值: (2859)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
pureGavin 如果想学习PWN 的内容,何必要买课??如果LZ 不介意的话,去ctfrime.org搜索队伍pureSec,一起学习啊,全都是免费的
林逸风申请加入
2019-12-28 10:55
0
雪    币: 1464
活跃值: (702)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
pureGavin 如果想学习PWN 的内容,何必要买课??如果LZ 不介意的话,去ctfrime.org搜索队伍pureSec,一起学习啊,全都是免费的
我是纯粹的个人业余爱好,并非专门打CTF比赛,感谢诚意邀请。
2019-12-28 13:49
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
5
bugchong 我是纯粹的个人业余爱好,并非专门打CTF比赛,感谢诚意邀请。
不不不,我发现很多人貌似都理解为专业赛混,其实CTFtime只是让新手入门,高手提高水平的一个平台,而且我也并不想拿到多少好处(毕竟黑客只想证明自己更聪明O(∩_∩)O),LZ只要想加入,随时都可以,现在基本每个月都有十几个CTF比赛在进行
2019-12-28 14:34
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
6
. 林逸风申请加入
欢迎!!! 这是邀请码(七天内有效!!):pureSec:1il5gN:V6EjlcTPzNYA6anmY_wSZpYAqLo
2019-12-28 14:35
0
雪    币: 3188
活跃值: (2859)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
pureGavin 欢迎!!! 这是邀请码(七天内有效!!):pureSec:1il5gN:V6EjlcTPzNYA6anmY_wSZpYAqLo
放寒假我就天天整这个了
现在要考试  慌得一匹
2020-1-2 09:31
0
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
8
pureGavin 欢迎!!! 这是邀请码(七天内有效!!):pureSec:1il5gN:V6EjlcTPzNYA6anmY_wSZpYAqLo
kaoyange 申请加入共同学习
2020-1-2 10:48
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
9
kaoyange kaoyange 申请加入共同学习
没看到你,只看到一个叫‘megrez’的人
2020-1-2 11:31
0
雪    币: 81
活跃值: (462)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
pureGavin 如果想学习PWN 的内容,何必要买课??如果LZ 不介意的话,去ctfrime.org搜索队伍pureSec,一起学习啊,全都是免费的
ctfrime.org 打不开这个网站啊
2020-1-2 12:02
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
11
Kris777 ctfrime.org 打不开这个网站啊
我用手机开热点就能打开,如果打不开的话,开VPN一定能打开
2020-1-2 13:02
0
雪    币: 2809
活跃值: (1210)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
pureGavin 我用手机开热点就能打开,如果打不开的话,开VPN一定能打开
ctftime.org 这个网址吧
2020-1-2 15:29
1
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
13
i未若 ctftime.org 这个网址吧
https://ctftime.org/ 
是这个,事实证明无论是Firefox还是Chrome,有没有VPN都能打开
最后于 2020-1-2 16:15 被pureGavin编辑 ,原因: 错字
2020-1-2 16:14
0
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
14
pureGavin 没看到你,只看到一个叫‘megrez’的人
在join existing team时输入pureSec,然后提交申请,出现Please, submit valid captcha,请教如何才能加入队伍?
2020-1-2 17:53
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
15
kaoyange 在join existing team时输入pureSec,然后提交申请,出现Please, submit valid captcha,请教如何才能加入队伍?
我不是发了邀请码么??在上面
2020-1-2 18:48
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
pureGavin 我不是发了邀请码么??在上面
Hackpluto申请加入!
2020-2-10 21:58
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
17
hackPluto Hackpluto申请加入!
欢迎
2020-2-10 22:48
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
pureGavin 欢迎
我已经在ctftime上提交了申请,请师傅同意一下
2020-2-11 00:14
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
hackPluto 我已经在ctftime上提交了申请,请师傅同意一下
之前的邀请码已经失效了
2020-2-11 00:14
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
20
hackPluto 我已经在ctftime上提交了申请,请师傅同意一下
已经同意了    O(∩_∩)O
2020-2-11 01:37
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
pureGavin 已经同意了 O(∩_∩)O
本人目前学习完了ctfwiki里的pwn,想和师傅一起学习pwn,但是在ctftime战队里没有找到发私信的地方,师傅能不能给我留一个邮箱
2020-2-11 15:32
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
22
hackPluto 本人目前学习完了ctfwiki里的pwn,想和师傅一起学习pwn,但是在ctftime战队里没有找到发私信的地方,师傅能不能给我留一个邮箱
我尽量做一个discord或者IRC,这样能方便交流并且还不会收集隐私信息
2020-2-11 19:26
0
雪    币: 3343
活跃值: (75)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
23
pureGavin 我尽量做一个discord或者IRC,这样能方便交流并且还不会收集隐私信息
表哥 总算找到你了,我想问你英语怎么这么好,请问有什么学习英语的方法吗??还望表哥告知
2020-2-11 19:38
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
24
笑出腹肌XCFJ 表哥 总算找到你了,我想问你英语怎么这么好,请问有什么学习英语的方法吗??还望表哥告知
表哥是什么鬼??O(∩_∩)O哈哈~
英语的话,大胆说出来就好了,就算是在巴黎市中心的大街上也会碰到很多不会说英语的人的(至少是不会用英语和我交流)
2020-2-11 21:30
0
游客
登录 | 注册 方可回帖
返回
//