当前位置: 首页 > news >正文

BUUCTF靶场[Web] [极客大挑战 2019]Havefun1、[HCTF 2018]WarmUp1、[ACTF2020 新生赛]Include

[web][极客大挑战 2019]Havefun1

考点:前端、GET传参

点开网址,发现是这个界面

点击界面没有回显,老规矩查看源代码,看到以下代码 

 代码主要意思为:

用get传参,将所传的参数给cat,如果cat=dog,则会输出flag

我们则GET传参将dog赋予cat如图:

点击则页面回显出flag

[web][HCTF 2018]WarmUp1

考点:代码审计、文件包含

访问网站只有一张图片

老规矩,查看源码

源码提示由一个子域,还被注释掉了,将其访问

是一段php代码

<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){//验证白名单$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
//定义了一个名为emmm的类,在该类中有一个静态方法checkFile用于检查要包含的文件是否在白名单中,白名单是一个关联数组$whitelist,其中包含了允许包含的文件的键值对。在代码中,允许包含的文件有"source"=>"source.php"和"hint"=>"hint.php"。if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}//checkFile方法首先检查传入的$page参数传进来的file变量不是非空已设置或者不是字符串,会输出“you can't see it”,并返回falseif (in_array($page, $whitelist)) {return true;}。//如果传入的file参数在whitelist里,回返回真,这里就知道,file参数的值该是上面两个之一$_page = mb_substr(//提取字符串$page,0,mb_strpos($page . '?', '?')//括号里"."是 PHP 中的字符串连接运算符,是连接两个字符串//mb_strpos函数,查找第二个参数在第一个参数中首次出现的位置//这里知道第三个参数length=传入字符串长度(因为第一个位置是0//但是这里如果加入?就会起到截断的作用);if (in_array($_page, $whitelist)) {return true;//如果变量_page(传入参数被截过的部分)在白名单里,可以返回true}$_page = urldecode($page);//url解码,按规则解码已编码的url字符串,所以构造payload的时候可以考虑用url编码的方式绕过$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}}
//主函数部分
//$_REQUEST['file'] 获取传递的参数file中存储的值if (! empty($_REQUEST['file'])//传入参数不能为空&& is_string($_REQUEST['file'])//检查是否是字符串&& emmm::checkFile($_REQUEST['file'])//调用emmm类中的checkFile函数) {  //所以,不进入else分支,可以调用include函数读取传入文件。这里要满足if中的条件为真include $_REQUEST['file']; //include文件读取函数是直接读取fileexit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}  //检查$_REQUEST['file']是否存在且为字符串类型,并调用emmm::checkFile方法进行检查。如果返回值为true,则通过include语句包含$_REQUEST['file']指定的文件并终止程序执行,否则输出一个图片标签。
?>

substr()函数、strpos()i函数、in_array()函数进行简义:

string substr ( string $string , int $start [, int $length ] )

返回字符串 string 由 start 和 length 参数指定的子字符串。

输入字符串,如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。

如果 string 的长度小于或等于 start,将返回 FALSE

$rest = substr("abcdef", -1);    // 返回 "f"

$rest = substr("abcdef", 0, -1);  // 返回 "abcde"
$rest = substr("abcdef", 2, -1);  // 返回 "cde"
$rest = substr("abcdef", 4, -4);  // 返回 ""
$rest = substr("abcdef", -3, -1); // 返回 "de"

echo substr('abcdef', 1);     // bcdef
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
echo substr('abcdef', 0, 8);  // abcdef
echo substr('abcdef', -1, 1); // f

mixed strpos ( string $haystackx ,mixed $needle [, int $offset = 0 ] )

返回 needle 在 haystack 中首次出现的数字位置。

同时注意字符串位置是从0开始,而不是从1开始的(没有提供offset时)。

offset

如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计

如果没找到 needle,将返回 FALSE(因此应该用===来测试返回的值)

​
<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);// 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作,
// 因为 'a' 是第 0 位置上的(第一个)字符。
if ($pos === false) {echo "The string '$findme' was not found in the string '$mystring'";
} else {echo "The string '$findme' was found in the string '$mystring'";echo " and exists at position $pos";
}
?><?php
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
?>​
  • stripos() - 查找字符串首次出现的位置(不区分大小写)
  • strrpos() - 查找字符串- 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 查找字符串- 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

in_array() 函数搜索数组中是否存在指定的值。

in_array(search,array,type)

参数描述
search必需。规定要在数组搜索的值。
array必需。规定要搜索的数组。
type可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
说明

如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 search 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

访问 hint.php 发现 flag 不在此页,显示在ffffllllaaaagggg目录上

在source.php页面下进行的传参操作,目的是利用include函数将flag文件包含出来,不要被这里的白名单混淆奥

添加"/"让 hint.php?变成一个目录,但是这个目录并不存在,Include 函数就会取执行后面的,跳转到上层目录,

传入checkFile函数要经历 第一次白名单验证 一次?过滤后他就是hint.php 再进行一次白名单验证 返回为真 则达成条件进行包含得到flag

tips:include函数有这么一个神奇的功能:以字符‘/’分隔(而且不计个数),若是在前面的字符串所代表的文件无法被PHP找到,则PHP会自动包含‘/’后面的文件——注意是最后一个‘/’。

(这里让变量_page 变成白名单里的文件名就可以返回 true,但是 flag 并不在白名单的文件里,所以要利用 Include 函数去跳转到别的目录(flag 是在 ffffllllaaaagggg 里,但是不知道这个长名字的文件在哪)

(因为我们当前的source.php一般是在html目录下,往上是www,var,然后到根目录,flag一般就放在根目录下面,这里还有一个hint.php?/或者source.php?/,因此需要返回四层才能到根目录,其实文件名也提示了我们要使用四层目录)

构造 payload三种方法:

source.php?file=hint.php?/../../../../ffffllllaaaagggg

或者:

source.php?file=source.php?/../../../../ffffllllaaaagggg

或者:

hint.php?../…/…/…/…/ffffllllaaaagggg 想象他传入checkFile函数要经历 第一次白名单验证 一次?过滤后就是hint.php 再进行一次白名单验证 返回为真 则达成条件进行包含得到flag

index.php?file=hint.php?/../../../../ffffllllaaaagggg

正确回显,得到flag:

 [web][ACTF2020 新生赛]Include

考点:文件包含漏洞

打开网址回显这个页面

点击tips,回显这个页面,但是看到网址栏由?file=flag.php和题目include,是个文件包含题

用伪协议base64编码进行读取: 

?file=php://filter/read=convert.base64-encode/resource=flag.php

 

 读出来的编码进行base64解码:得到flag

 这题好像只能用base64进行读取,我试了三种就base64能正常回显,但是不妨碍我对伪协议的三种方法的普及:

三种编码伪协议:

① 以Base64编码的方法读取:
?file=php://filter/read=convert.base64-encode/resource=/etc/passwd
② 以ROT13加密的方法读取:
?file=php://filter/read=string.rot13/resource=/etc/passwd
③ 以iconv编码转换的方法读取:
?file=php://filter/convert.iconv.utf-8.utf-7/resource=/etc/passwd

相关文章:

BUUCTF靶场[Web] [极客大挑战 2019]Havefun1、[HCTF 2018]WarmUp1、[ACTF2020 新生赛]Include

[web][极客大挑战 2019]Havefun1 考点&#xff1a;前端、GET传参 点开网址&#xff0c;发现是这个界面 点击界面没有回显&#xff0c;老规矩查看源代码&#xff0c;看到以下代码 代码主要意思为&#xff1a; 用get传参&#xff0c;将所传的参数给cat&#xff0c;如果catdog…...

现代信号处理11_Spectral Analysis谱分析(CSDN_20240526)

谱分析与傅里叶变换 对于一个信号&#xff0c;一方面可以从时域上对其进行分析&#xff0c;另一方面也可以从频域上对其进行认识&#xff0c;对信号进行频谱分析能够帮助我们了解能量在频域上的分布。 确定性信号的能量通常是有限的&#xff0c;而平稳随机信号的能量通常是无限…...

C#开发上位机应用:基础与实践

C#是一种流行的面向对象编程语言&#xff0c;常用于Windows应用程序的开发。上位机应用是一种用于监控和控制设备或系统的应用程序&#xff0c;通常与下位机&#xff08;如传感器、执行器等&#xff09;进行通信。在本文中&#xff0c;我们将介绍C#开发上位机应用的基础知识和实…...

话术巧妙分隔沟通效果更佳看看这个小技巧

客服回复客户咨询&#xff0c;如果遇到比较复杂的问题&#xff0c;经常会有大段的文字回复&#xff0c;用聊天宝的分段符功能&#xff0c;在需要分段的地方点击右上角的“插入分隔符”&#xff0c;就可以在指定位置分段&#xff0c;实现多段发送的目的。 前言 客服回复客户咨询…...

【Spring】设计模式(GOF)

Spring Framework在其架构和实现中广泛使用了多种GOF&#xff08;Gang of Four&#xff09;设计模式。这些设计模式帮助Spring解决了许多常见的软件开发问题&#xff0c;提高了代码的可重用性、可维护性和可扩展性。 1、工厂模式&#xff08;Factory Pattern&#xff09; 1.1简…...

php抖音详情和关键词搜索api

抖音详情和关键词搜索的 API 可以通过抖音提供的开放平台来获取。以下是使用 PHP 实现的示例代码&#xff1a; 获取抖音视频详情 API&#xff1a; 获取Key和secret请移步 <?php$accessToken YOUR_ACCESS_TOKEN; // 替换为自己的 access_token $itemId YOUR_ITEM_ID; /…...

SOCKS 代理 和 HTTP 代理

SOCKS 代理 和 HTTP 代理 的区别 SOCKS 代理 和 HTTP 代理 都是代理服务器&#xff0c;它们充当客户端和目标服务器之间的中介&#xff0c;但它们的工作方式和应用场景有所不同。 1. SOCKS 代理&#xff1a; 工作原理&#xff1a; SOCKS 代理是一种更底层的代理&#xff0c;…...

【Linux】自己实现一个bash进程

bash就是命令行解释器&#xff0c;就是Linux操作系统让我们看到的&#xff0c;与用户进行交互的一种外壳&#xff08;shell&#xff09;&#xff0c;当然了bash也是一个进程&#xff0c;它有时候就是通过创建子进程来执行我们输入的命令的。这无疑就离不开我们上篇博客所说的进…...

记录深度学习GPU配置,下载CUDA与cuDnn

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip cuda历史版本网址 CUDA Toolkit Archive | NVIDIA Developer 自己下载过11.0.1版本 点击下载local版本,本地安装,有2个多GB,很大,我不喜欢network版本,容易掉线 cuDnn https://developer.nvi…...

Word将表格调成合适的大小

请等待内容完善...

2024HBCPC:C Goose Goose Duck

题目描述 Iris 有 n n n 个喜欢玩鹅鸭杀的朋友&#xff0c;编号为 1 ∼ n 1∼n 1∼n。 假期的时候&#xff0c;大家经常会在群里问有没有人玩鹅鸭杀&#xff0c;并且报出现在已经参与的人数。 但是每个人对于当前是否加入游戏都有自己的想法。 具体的来说&#xff0c;对于第…...

Llama 3 模型家族构建安全可信赖企业级AI应用之使用 Llama Guard 保护大模型对话 (八)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…...

《一地霜白》读书笔记

1.3.6 街灯明灭&#xff0c;勾缀成行&#xff0c;为了生者与死者 “很多年过去了。回头看&#xff0c;沿着一排暗中的街灯&#xff0c;两三盏灭了&#xff0c;郁闷中有意外的欣喜&#xff1a;街灯明灭&#xff0c;勾缀成行&#xff0c;为了生者与死者。” 童年、青少年在人的…...

在Java中实现多线程之间的通信

一、技术难点 在Java中实现多线程之间的通信是一个复杂但重要的任务&#xff0c;它涉及到线程同步、数据共享和线程间协作等多个方面。以下是实现多线程通信时可能遇到的一些技术难点&#xff1a; 线程同步&#xff1a;多线程环境下&#xff0c;多个线程可能同时访问和修改共享…...

Python中的json.dump与json.dumps对比

Python中的json.dump与json.dumps对比 json.dumps()json.dump() json.dumps() dumps 是 “dump string” 的缩写。它将Python对象转换&#xff08;序列化&#xff09;为JSON格式的字符串。数据被转换为一个字符串&#xff0c;并且这个字符串可以直接被写入文件、发送到网络&am…...

【从零开始学习RabbitMQ | 第二篇】如何确保MQ的可靠性和消费者可靠性

目录 前言&#xff1a; MQ可靠性&#xff1a; 数据持久化&#xff1a; Lazy Queue&#xff1a; 消费者可靠性&#xff1a; 消费者确认机制&#xff1a; 消费失败处理&#xff1a; MQ保证幂等性&#xff1a; 方法一&#xff1a; 总结&#xff1a; 前言&#xff1a; …...

常用批处理命令及批处理文件编写技巧

一常用批处理命令 1.查看命令用法&#xff1a;命令 /? //如&#xff1a;cd /? 2.切换盘符目录&#xff1a;cd /d D:\test 或直接输入 d: //进入上次d盘所在的目录 3.切换目录&#xff1a;cd test 4.清屏:cls 5.“arp -a” //它会列出当前设备缓存中的所有…...

android NetworkMonitor记录

是否能上网的状态 上网url地址的设置&#xff1a; NetworkMonitor.java makeCaptivePortalHttpsUrls config_captive_portal_https_urls DEFAULT_CAPTIVE_PORTAL_HTTPS_URLS http准备监测 isCaptivePortal sendHttpAndHttpsParallelWithFallbackProbes httpsProbe.start();…...

OSPF优化——OSPF减少LSA更新量2

二、特殊区域——优化非骨干区域的LSA数量 不是骨干区域、不能存在虚链路 1、不能存在 ASBR 1&#xff09;末梢区域 该区域将拒绝 4、5LSA的进人&#xff0c;同时由该区域连接骨干0区域的ABR 向该区域&#xff0c;发布一条3类的缺省路由; 该区域内每台路由器均需配置&#xf…...

【AMS】Android 8.0+ 绕开启动后台Service限制

一、背景 应客户要求,需要在开机时,拉起应用A。但因为开机时,同时被拉起的应用过多,导致Launcher在开机那一刻较为卡顿。为解决这一问题,采取了延迟拉起的做法。在开机后,延迟一定时间,由系统服务,拉起应用A。 于是乎,就出现这么个报错: Not allowed to start ser…...

7步构建个性化定制:Degrees of Lewdity中文整合包深度改造指南

7步构建个性化定制&#xff1a;Degrees of Lewdity中文整合包深度改造指南 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS DOL-CHS-MODS是一款基于Degrees of Lewdity中文汉化版的自动化构建系统&am…...

灵毓秀-牧神-造相Z-Turbo使用全攻略:从环境检查到作品输出

灵毓秀-牧神-造相Z-Turbo使用全攻略&#xff1a;从环境检查到作品输出 1. 镜像简介与核心功能 灵毓秀-牧神-造相Z-Turbo是一款基于Xinference部署的AI文生图模型服务&#xff0c;专门用于生成《牧神记》中灵毓秀角色的高质量图像。该镜像集成了Gradio交互界面&#xff0c;让用…...

何时DCDC预降压+LDO二次线性稳压?

LDO 核心选型分界结论及优化要点核心选型分界结论以LDO输入输出压差ΔV为核心判断指标&#xff0c;结合输出功率、场景约束&#xff0c;通用选型规则如下&#xff1a;通用强制分界点&#xff1a;当ΔV≥2V&#xff0c;且输出功率≥100mW&#xff08;对应你之前的5V转3V70mA工况…...

Vivado项目文件太多分不清?这份FPGA开发必备的‘文件后缀速查手册’请收好

Vivado项目文件管理终极指南&#xff1a;从后缀识别到高效工作流 当你第一次打开一个成熟的Vivado项目文件夹时&#xff0c;那种面对几十种陌生文件后缀的茫然感&#xff0c;相信每个FPGA开发者都记忆犹新。就像走进了一个满是神秘符号的仓库&#xff0c;每个文件似乎都在向你发…...

Self Service Password与LDAP集成实战:从部署到问题排查

1. Self Service Password与LDAP集成概述 自助密码重置功能已经成为企业IT基础设施中不可或缺的一部分。想象一下&#xff0c;当员工在深夜加班时忘记密码&#xff0c;又找不到IT支持人员&#xff0c;这种场景下的自助解决方案就显得尤为重要。Self Service Password&#xff0…...

PyTorch 2.8镜像高算力适配:10核CPU调度策略优化,避免I/O瓶颈拖慢训练

PyTorch 2.8镜像高算力适配&#xff1a;10核CPU调度策略优化&#xff0c;避免I/O瓶颈拖慢训练 1. 镜像核心优势与硬件适配 PyTorch 2.8深度学习镜像经过深度优化&#xff0c;专为高性能计算场景设计。这个环境最显著的特点是完美适配了10核CPU与RTX 4090D显卡的协同工作&…...

Wan2.2-I2V-A14B效果展示:复杂提示词‘雨夜霓虹街道行人撑伞行走’生成效果

Wan2.2-I2V-A14B效果展示&#xff1a;复杂提示词雨夜霓虹街道行人撑伞行走生成效果 1. 模型能力概览 Wan2.2-I2V-A14B是一款专为高质量视频生成设计的先进模型&#xff0c;能够将文字描述转化为生动的动态画面。这款模型特别擅长处理复杂场景和细腻氛围的渲染&#xff0c;在以…...

0基础SEO优化的关键点有哪些

0基础SEO优化的关键点有哪些 在互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为了每一个网站运营者必须掌握的一项技能。特别是对于0基础的SEO优化者来说&#xff0c;这是一条充满挑战但也充满机遇的道路。0基础SEO优化的关键点有哪些呢&#xff1f;本…...

CST仿真EIT电磁诱导透明:石墨烯建模与案例分析

CST仿真eit电磁诱导透明(包括石墨烯的建模) EIT石墨烯电磁诱导透明案例搞EIT仿真的都知道&#xff0c;传统金属结构虽然经典&#xff0c;但石墨烯的可调性才是现在的香饽饽——靠栅压就能调费米能级&#xff0c;相当于给器件装了个电控遥控器&#xff0c;在传感器、慢光器件里简…...

MySQL解析器的性能优化:从理论到实践

MySQL解析器的性能优化&#xff1a;从理论到实践 引言 作为一名在数据深渊里捞了十几年 Bug 的女码农&#xff0c;我见过太多因为解析器性能问题导致的数据库瓶颈。在 MySQL 数据库中&#xff0c;解析器的性能直接影响 SQL 语句的处理速度和系统的整体性能。今天&#xff0c;我…...