BUU刷题记录(二)

本文详细记录了作者在学习Pwn过程中解决BUU系列挑战的过程,包括ciscn_2019_n_8、not_the_same_3dsctf_2016、HarekazeCTF2019_baby_rop等题目。通过checksec、ida分析,探讨了如何利用栈溢出、ROP等技术获取shell。文章涉及知识点包括NX保护、RELRO、shellcode注入等。
摘要由CSDN通过智能技术生成

buu——pwn学习

四、ciscn_2019_n_8

checksec一下
在这里插入图片描述
发现保护基本都开了,进入ida一探究竟:
在这里插入图片描述
达成条件很简单,就是让var[13]的值等于17就可以获取shell,这里要注意一点,var是int类型数组,所以填充的时候,比如var[0]就要填进去4个字节的内容才能填满(这里我刚开始疏忽了,一直没能获取权限。。)所以要是用a去填充要先填52个才行,之后才是输入17,不过如果直接使用p32会更方便一些,exp如下:

在这里插入图片描述

五、not_the_same_3dsctf_2016

在这里插入图片描述

在这里插入图片描述

查看一下开启了nx保护,以及一部分的relro,然后运行了一下,好像什么都没有。。拖入ida看看

在这里插入图片描述

好家伙,main函数里面的东西,以及函数窗口里面的情况让我想起了get_started_3dsctf_2016这题,似乎很像的样子
在这里插入图片描述

同样的不用覆盖ebp,直接就能到返回地址了,不清楚原理。。暂且不管吧,以后可能会看到的

在这里插入图片描述

这里有个函数,已经将flag的值读取并输入到了fl4g的位置,所以我们先用这个函数填充到返回地址处,把flag先读取到fl14为起始地址的内存中,接下来试着把这里的内容泄露出来,即可获取flag。所以我们需要write函数,并且因为write函数有三个参数,所以还需要pop 三个寄存器的指令进行清理栈,最后的p32(0)是pop中含着的ret操作,所以还需要再加一个返回地址,因为我们已经输出了flag,所以返回地址并不需要在意是哪,随便都可。具体exp如下:

在这里插入图片描述

六、[HarekazeCTF2019]baby_rop

只开启了nx和部分的relro保护机制,并且运行了没有多少的内容,很正常的内容回显。应该不会难的,嗯,先这么想。

在这里插入图片描述

在这里插入图片描述

进入ida看看,是不是跟想象的一样简单

在这里插入图片描述

在这里插入图片描述

的确如此,没有乱起名字。。确实是简单的rop,system函数和/bin/sh字符全都在,并且还有scanf的无限制输入,exp如下:

在这里插入图片描述

小插曲,我进入的时候,很惊讶的发现没有flag。。。不知道是管理员忘了,还是说哪个人做了不小心可能删了吧。。

七、jarvisoj_level2_x64

只开启了nx,运行一下,貌似也很简单的样子,预测可能跟32位的level2差不多吧,就是变到了64位的环境下,可能为了考验传参

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5fCMvizH-1649473845651)(2021-04-05-buu02.assets/image-20210405220229158.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QJckbFeT-1649473845651)(2021-04-05-buu02.assets/QQ图片20210405220316.png)]

做法跟上一题差不多吧,就不多放图片了,直接exp了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j2iyCcHI-1649473845652)(2021-04-05-buu02.assets/QQ图片20210405221357.png)]

八、ciscn_2019_n_5

好家伙,nx都没开启,可能要直接在栈上执行shellcode了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6VbqTru-1649473845652)(2021-04-05-buu02.assets/image-20210407194309117.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJvE8QZ9-1649473845653)(2021-04-05-buu02.assets/QQ图片20210407194556.png)]

确实的,有个gets无限输入,很明显可以被利用的溢出点。不过后面带了个name有点奇怪,进入看看汇编是什么情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U6NyRL5k-1649473845654)(2021-04-05-buu02.assets/QQ图片20210407194714.png)]

好吧,应该是ida出错了一些,只有调用了text,那就直接进行覆盖吧。因为pwntools已经有着自带的shellcode注入了,(要是没有的话我也不会写了,哈哈哈)exp如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z2xfOvFw-1649473845654)(2021-04-05-buu02.assets/QQ图片20210407201139.png)]

这里一开始是想直接就在栈上注入shellcode的,不过没能成功,可能是因为太长覆盖了一些其他信息了吧,所以就转移到bss上执行,在gdb中也能查看到bss也具有可执行性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRvaY3dx-1649473845655)(2021-04-05-buu02.assets/QQ图片20210407201152.png)]

九、ciscn_2019_ne_5

开启了nx和部分的relro缓解措施

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GroqjGVC-1649473845655)(2021-04-05-buu02.assets/QQ图片20210407201501.png)]

进入ida按F5会反编译失败,只要进入到对应地址的scanf函数里面按F5对函数编译,再回到main函数即可反编译成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLRMyFSj-1649473845655)(2021-04-05-buu02.assets/QQ图片20210407204835.png)]

首先把第一个密码绕过,输入administrator即可,当我们进入下面额print函数查看可以发现有system函数的调用,此时我们只需要再查找到参数和溢出点即可,往上看,调用了fflush函数,里面有sh字符串。这里有个点,sh字符串也可以成为system的函数获取到shell的权限。那么只剩下溢出点了。前面的scanf函数输入,都无法溢出。只有在Addlog里面的scanf函数可以覆盖,然后再去到函数4GetFlag里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wdswz4R6-1649473845655)(2021-04-05-buu02.assets/QQ图片20210407204813.png)]

有个strcpy函数,可以把之前输入的src复制到dest中,造成溢出。exp如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VZEPzfgg-1649473845656)(2021-04-05-buu02.assets/QQ图片20210407213005.png)]

exp还有个要注意的就是system后跟的返回地址不能写p32(0)这样的,因为这么写,scanf函数遇到’\x00’会停止读取,所以我这里选择直接写四个字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShouCheng3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值