PHP-trim

embedded/2025/2/7 23:25:14/

[题目信息]:

题目名称题目难度
PHP-trim1

[题目考点]:

trim() 函数移除字符串两侧的空白字符或其他预定义字符。

[Flag格式]:

SangFor{dl9hFiITmhQNAJysCgigAskyCZ6kQaDc}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

http://分配ip:2059

[题目writeup]:

1、实验主页

2、源码分析

<?php
include('flag.php');
highlight_file(__FILE__);
error_reporting(0);
function filter($num){$num=str_replace("0x","1",$num);$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'){if($num=='36'){echo $flag;}else{echo "hacker!!";}
}else{echo "hacker!!!";
} 

分析代码逻辑,使用了自定义函数filter()对$num进行过滤,将0x,0,e等字符替换为了1。这意味着将无法使用16进制,8进制等方法进行绕过。

is_numeric函数来判断用户输入是否为数字,并且if条件里规定trim($num)移除字符串两侧的字符不能等于36,但后面的if需要等于36才能输出flag。

此时可以编写脚本查看哪些字符可以使用

<?php
for ($i = 0; $i <= 128; $i++) {$a = chr($i) . '36';if (trim($a) !== '36' && is_numeric($a)) {echo urlencode(chr($i)) . "\n";}
}

发现%0C,也就是\f分页符可以利用,不会被trim过滤掉,所以payload为

?num=%0c36


http://www.ppmy.cn/embedded/160407.html

相关文章

安全实验作业

一 拓扑图 二 要求 1、R4为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4与其他所有直连设备间均使用共有IP 2、R3-R5-R6-R7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 4、所有设备均可访问R4的环回&#x…

中国城商行信贷业务数仓建设白皮书(第四期:机器学习中台建设)

一、特征工程服务体系 1.1 特征分层架构 构建全行级特征工厂,实现"三横四纵"特征治理模型: ┌───────────────┐ │ 应用特征层 │ │ (实时特征服务) │ └───────┬───────┘ …

vue3中的ref相关的api及用法

在 Vue 3 中&#xff0c;ref 相关的 API 主要用于管理响应式数据。以下是 ref 相关的 API 及其用法&#xff1a; 1. ref ref 用于创建响应式的基本数据类型或对象。 用法示例&#xff1a; <script setup> import { ref } from vue;const count ref(0);const incremen…

node.js使用mysql2对接数据库

一、引言 在现代Web开发中&#xff0c;Node.js作为一种高效、轻量级的JavaScript运行时环境&#xff0c;已经广泛应用于后端服务的开发中。而MySQL&#xff0c;作为一个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;提供了强大的数据存储和查询功能…

[转]Java面试近一个月的面试总结

本文是在学习中的总结&#xff0c;欢迎转载但请注明出处&#xff1a;http://blog.csdn.net/pistolove/article/details/46753275 前言 打算换个工作&#xff0c;近一个月面试了不少的公司&#xff0c;下面将一些面试经验和思考分享给大家。另外校招也快要开始了&#xff0c;为…

maven如何不把依赖的jar打包到同一个jar?

spring boot项目打jar包部署&#xff1a; 经过以下步骤&#xff0c; 最终会形成maven依赖的多个jar&#xff08;包括lib下添加的&#xff09;、 我们编写的程序代码打成一个jar&#xff0c;将程序jar与 依赖jar分开&#xff0c;便于管理&#xff1a; success&#xff1a; 最终…

C++编程语言:抽象机制:模板(Bjarne Stroustrup)

目录 23.1 引言和概观(Introduction and Overview) 23.2 一个简单的字符串模板(A Simple String Template) 23.2.1 模板的定义(Defining a Template) 23.2.2 模板实例化(Template Instantiation) 23.3 类型检查(Type Checking) 23.3.1 类型等价(Type Equivalence) …

Java JDK17 API 离线文档下载

Java JDK17 API 离线文档下载 JavaJDK17API离线文档下载 本仓库提供了一个方便的资源文件下载&#xff0c;即 **Java JDK17 API 离线文档**。该文档是Java开发者在离线环境下查阅JDK17 API的必备工具。无论你是Java初学者还是经验丰富的开发者&#xff0c;这份离线文档都能帮助…