2023SICTF-web-白猫-[签到]Include

0×01 分析题目

#题目名称:
[签到]Include
#题目简介:
flag位于flag.php,是一个非常简单的文件包含捏~
#题目环境:
http://210.44.151.51:10035/
#函数理解:
substr() 函数返回字符串的一部分
如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。
语法
substr(string,start,length)
参数string,必需,规定要返回其中一部分的字符串
参数start,必需,规定在字符串的何处开始
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾开始的指定位置开始
0 - 在字符串中的第一个字符处开始,(n-1)
#环境代码:
<?php #PHP开始代码,头代码
error_reporting(0); #屏蔽报错信息
if (isset(KaTeX parse error: Expected '}', got '#' at position 60: … #̲_GET函数获取SICTF变量的数据,isset函数用来检测SICTF变量是否存在并且是否非空(NULL),if循环判断语句条件满足继续向下执行
if ( substr(KaTeX parse error: Expected '}', got '#' at position 42: …php" ) { #̲substr函数返回SICTF…_GET[“SICTF”]); #include函数包含并执行文件,执行SICTF变量值里面的文件,并且返回结果
}

    else {                                                            	#反之echo "你干嘛~~~";                                              	#输出 你干嘛~~~}
}else {                                                               #反之highlight_file(__FILE__);                                         #highlight_file() 函数对文件进行语法高亮显示,继续呈现页面代码
}                                                                     #结束

#初次尝试:
1.payload:
URL/?SICTF=1;
回显结果:
你干嘛~~~
2.payload:
URL/?SICTF=php;
回显结果:
你好厉害呀~~~
条件达成但是并没有回显flag

考虑到题目名称和题目简介以及环境代码中的include文件包含函数
猜测需要用到php://filter伪协议来绕过文件包含

0×02 开始解题

#进行PHP伪协议伪造

伪造之前先了解,PHP伪协议构造的规则
php://filter/过滤器|过滤器/resource=待过滤的数据流
web中大部分都是BASE64编码格式,那么我们过滤器就用convert.base64-encode
构造后:
php://filter/convert.base64-encode/resource=flag.php
完整payload:

1. URL/?SICTF=php://filter/convert.base64-encode/resource=flag.php
2. URL/?SICTF=php://filter/read=convert.base64-encode/resource=flag.php

拆分解析:
?是起始符可以理解为连接拼接的意思
URL是环境链接
SICTF是题目中给的变量
=是赋值的意思
php://filter是伪协议
convert转换,base64,encode编码
resource=flag.php转换到flag.php文件中,就是说把flag.php文件转换为base64编码格式
上传payload
回显结果:
你好厉害呀~~~PD9waHAKJGZpbGVfcGF0aCA9ICIvZmxhZyI7CmlmIChmaWxlX2V4aXN0cygkZmlsZV9wYXRoKSkgewogICAgJGZsYWcgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9wYXRoKTsKfQplbHNlewogICAgZWNobyAiZXJyb3IiOwp9Cg==
显而易见这是base64编码
送去base64解码,结果:
<?php #PHP开始,头代码
KaTeX parse error: Expected 'EOF', got '#' at position 54: … #̲file_path文件路径,/根目录下的flag
if (file_exists($file_path)) { #file_exists检查根目录下的flag文件或目录是否存在,if循环判断语句,条件满足继续向下执行
f l a g = f i l e g e t c o n t e n t s ( flag = file_get_contents( flag=filegetcontents(file_path); #file_get_contents() 函数把根目录下的flag整个文件读入一个 f l a g 字符串中 , flag字符串中, flag字符串中,flag定义的flag变量
}
else{ #反之
echo “error”; #输出 error
} #结束
通过分析以上代码可知,此flag文件可能是文本文件,并且在/根目录下
所以说resource待过滤的数据流不是flag.php而是/flag
重新构造payload:
URL/?SICTF=php://filter/convert.base64-encode/resource=/flag
上传payload后数据流/flag传入 f i l e p a t h 参数里面,继续向下执行进入到 i f 循环判断语句中,检擦到 file_path参数里面,继续向下执行 进入到if循环判断语句中,检擦到 filepath参数里面,继续向下执行进入到if循环判断语句中,检擦到file_path参数变量/flag根目录下的flag文件存在,继续向下执行
file_get_contents() 函数把根目录下的flag整个文件读入一个 f l a g 字符串参数中 , 并回显 flag字符串参数中,并回显 flag字符串参数中,并回显flag字符串参数的值

再一次拿到base64编码:
你好厉害呀~~~U0lDVEZ7ZjZiYzQ1NTQtMDU5Mi00ODdkLTk5ZDQtNTAzZTQ0YWM0ODIyfQo=
送去base64解码
#拿到flag
SICTF{f6bc4554-0592-487d-99d4-503e44ac4822}

base64编码解码网站推荐:https://c.runoob.com/front-end/693/

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

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

相关文章

CI/CD 构建中能保护好 SSHKEY吗?

目录 背景 方案 编码存储 逐行存储 合并存储 打马赛克 结论 背景 使用极狐GitLab CI/CD&#xff0c;在部署方面&#xff0c;主要有两种方式&#xff1a; 部署到K8S集群 Push模式&#xff1a;流水线通过kubectl执行命令部署&#xff0c;这需要把K8S的权限给流水线&#xf…

GoWeb学习-第二天

文章目录 从零开始学Go web——第二天一、安装Go语言二、建立web目录2.1 创建GO语言包目录2.2 创建Go web文件 三、编译并运行Go web应用3.1 编译并运行3.2 查看结果 从零开始学Go web——第二天 ​ 第一天我们了解了与web息息相关的HTTP协议&#xff0c;聊了聊Go与web的关系等…

LeetCode Hot100 42.接雨水

题目&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法一&#xff08;相向双指针&#xff09;&#xff1a;竖着计算面积 代码&#xff1a; class Solution {public int trap(int[] he…

无分类编址 CIDR

在域名系统出现之后的第一个十年里&#xff0c;基于分类网络进行地址分配和路由IP数据包的设计就已明显显得可扩充性不足&#xff08;参见RFC 1517&#xff09;。为了解决这个问题&#xff0c;互联网工程工作小组在1993年发布了一新系列的标准——RFC 1518和RFC 1519——以定义…

flutter-web中使用js工具类

文章目录 为什么要调用js1. 引入js web/index.html2. 创建工具js web/CryptoEnc.js3. 创建对应的lib/js/js_interop.dart4. 由于引入的js是针对web平台的&#xff0c;所以引入需要做引入处理5. 使用引用 为什么要调用js JavaScript拥有庞大且成熟的工具生态系统 1. 引入js web/…

初识数据结构及复杂度

1、数据结构 数据结构数据结构&#xff08;描述和组织数据&#xff09;&#xff0c;Java会把一些数据结构封装起来&#xff0c;在java中数据结构叫做集合。 数据结构&#xff1a;&#xff08;data structer&#xff09;是计算机存储、组织数据的方式&#xff0c;指相互之间存在…

mac电脑下载Netflix Mac(奈飞客户端)安装教程

Netflix Mac&#xff0c;奈飞官方客户端&#xff0c;带给您无限的电影和剧集体验&#xff01;与朋友分享最新热门剧集、电影&#xff0c;与家人一起享受高品质的流媒体内容。 通过Netflix Mac&#xff0c;您可以轻松地搜索、浏览和观看各种类型的影片&#xff0c;包括剧情片、…

角色管理--高级产品经理岗

研发组织管理--角色管理--高级产品经理岗 定位 产品从规划到推进落地的绝对主力&#xff0c;同时能赋能新人&#xff0c;带领新人高质&#xff0c;高效的完成产品的各项工作&#xff1b; 所需资质 某一领域产品专家&#xff0c;有产品架构能力&#xff0c;熟悉产品落地流程…

【鸿蒙应用ArkTS开发系列】- 选择图片、文件和拍照功能实现

文章目录 前言创建多媒体Demo工程创建MediaBean 实体类创建MediaHelper工具类API标记弃用问题动态申请多媒体访问权限实现选择图片显示功能打包测试 前言 在使用App的时候&#xff0c;我们经常会在一些社交软件中聊天时发一些图片或者文件之类的多媒体文件&#xff0c;那在鸿蒙…

GitHub 2023排名前十的最佳开源项目

开源软件&#xff08;OSS&#xff09;彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中&#xff0c;要找到最适合需求的开源项目可能会让人不知所措。 今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目&#xff0c;也可以从整体上了…

算法 离散化

整数离散化 适用条件 适用于有序的整数序列该序列的值域很大&#xff0c;该序列的数的个数很少使用的是数的相对大小而非绝对大小 算法思路 原数组 a &#xff1a; 数组下标&#xff1a;0 1 2 3 4 数组元素&#xff1a;1 2 2 5 109 映射数组 &#xff1a; 数组下标&…

Flask教程入门

1.学习Flask之前&#xff0c;首先需要对URL进行一定的了解。 URL的一些知识&#xff1a; 1.URL只能包含ASCII码里面一些可显示的字符&#xff0c;如A-Z&#xff0c;a-z&#xff0c;0-9&#xff0c;&&#xff0c;#&#xff0c;%&#xff0c;&#xff1f;&#xff0c;/等字符…

数据链路层——以太网协议、ARP协议

目录 以太网协议 以太网协议的简介 以太网协议所处的位置 以太网帧&#xff08;或者说MAC帧&#xff09;的格式 局域网通信原理 碰撞避免算法&#xff08;包含MTU的知识点&#xff09; 局域网攻击原理 ARP协议 ARP协议所在的位置 为什么要存在ARP协议&#xff08;或者…

nodejs669在线图书借阅管理系统vue前端

系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理用户模块、用户表模块、图书借阅模块、图书归还模块、图书分类模块、token表模块、收藏表模块、书籍信息模块、图书资讯模块、留言板模块、书籍信息评论表模块、注册用户模块、配置文件模块、处罚记录模块、在线客…

CC++内存对齐

说明 在C语言中&#xff0c;内存对齐是一种优化技术&#xff0c;用于提高数据访问的速度并降低CPU的内存存取时间。内存对齐主要针对结构体、联合体等数据结构&#xff0c;编译器会自动将数据对齐到其自然对齐字节的整数倍的位置。 C语言中内存对齐遵循以下规则&#xff1a; …

Mysql更新Blob存储的Josn数据

Mysql更新blob存储的Josn数据 记录一次mysql操作blob格式存储的json字符串数据 1、检查版本 -- 版本5.7以上才可以能执行json操作 select version(); 2、创建测试数据 -- 创建测试表及测试数据 CREATE TABLE test_json_table AS SELECT UUID(), {"test1": {"…

Java---权限修饰符、final、static

文章目录 1. 权限修饰符2. final(最终态)3. static(静态) 1. 权限修饰符 修饰符同一个类中同一个包中的子类和无关类不同包的子类不同包的无关类private√默认√√protected√√√public√√√√ 2. final(最终态) 1. final关键字是最终的意思&#xff0c;可以修饰成员方法、…

MATLAB基础应用精讲-【数模应用】漫谈深度学习

目录 几个高频面试题目 传统CV和深度学习方法的比较 DL和传统计算机视觉的比较

langchain实战笔记系列

最近因工作需要&#xff0c;需要做一下ChatGLM的技术验证&#xff0c;主要是基于langchain进行学习&#xff0c;以此系列记录一下实战过程。 以下是系列文章&#xff1a; Langchain-Chatchat-win10本地安装部署成功笔记&#xff08;CPU&#xff09;-CSDN博客 Win10系统下tor…

OpenCV数字图像处理——检测出图像中的几何形状并测量出边长、直径、内角

一、简介 在传统的自动化生产尺寸测量中&#xff0c;常用的方法是利用卡尺或千分尺对被测工件的某个参数进行多次测量&#xff0c;并取这些测量值的平均值。然而&#xff0c;这些传统的检测设备或手动测量方法存在着一些问题&#xff1a;测量精度不高、测量速度缓慢&#xff0…