CTF常见的php函数

本文介绍了PHP中常用的字符串处理函数,包括str_replace、strstr、parse_str等,并解释了它们的使用方法及注意事项。通过实例展示了如何利用这些函数进行字符串查找、替换、截取等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.3
str_replace(find,replace,string,count):在字符串sting中找到字符串find,并把它替换成replace;
eg: str=str_replace(key,’ ',$str) 空字符串代替 str里的 key
count 可选。对替换数进行计数的变量。

strstr(string,search,before_search):找到search字符串在string中第一次出现的位置,并把后面的字符串输出;before_search如果为true,则返回位置之前的字符串;默认为false
eg:str = strstr(_SERVER[‘REQUEST_URI’], ‘?’); 将URL里的?之后的参数全部输出;

parse_str(string,array):把查询字符串解析到变量中;

substr(string,start,length):看参数很容易理解,返回字符串的一部分;
------string 必需。规定要返回其中一部分的字符串。

------start 必需。规定在字符串的何处开始。

	正数 - 在字符串的指定位置开始
	负数 - 在从字符串结尾开始的指定位置开始
	0 - 在字符串中的第一个字符处开始

------length 可选。规定被返回字符串的长度。默认是直到字符串的结尾。

	正数 - 从 start 参数所在的位置返回的长度
    负数 - 从字符串末端返回的长度

deldot(file_name); //删除文件名末尾的点

strrchr($file_name, ‘.’);
作用是 从删除"222"的位置开始删除 “111222333”;

<?php
echo strrchr("111222333","222");
?>

str_ireplace(’::$DATA’, ‘’, fileext);//去除字符串::file_ext);//去除字符串::fileext);//::DATA
将三个位置理解成三个存放字符串1,2,3的地方
即将 字符串3 中的 字符串1 替换成 字符串2

<?php
echo str_ireplace("WORLD","Shanghai","Hello world!");
?>
//输出 hellow shanghai
说明不区分字符串的大小写

trim($file_ext)
移除字符串两侧的字符(“Hello” 中的 “He” 以及 “World” 中的 “d!”):

<?php
$str = "Hello World!";
echo $str . "<br>";
echo trim($str,"Hed!");
?>
//如果只放一个变量代表将字符串首尾去空

### CTF竞赛中的Include函数利用 在CTF竞赛中,`include` 函数的漏洞通常出现在PHP环境中。当应用程序允许用户输入控制 `include` 的参数时,可能会引发远程文件包含 (Remote File Inclusion, RFI) 或本地文件包含 (Local File Inclusion, LFI)[^1]。 #### 远程文件包含(RFI) RFI 攻击发生在服务器配置不当或 PHP 脚本未正确过滤用户输入的情况下。如果可以操纵 URL 参数来加载外部资源,则可以通过构造恶意请求引入远程服务器上的脚本: ```php <?php // 不安全的代码示例 $page = $_GET['page']; include($page . '.php'); ?> ``` 为了防止这种类型的攻击,应该始终验证并清理任何用于动态包含路径的数据[^2]。 #### 本地文件包含(LFI) LFI 是指通过修改文件名参数读取任意本地文件的内容。这可能暴露敏感信息如 `/etc/passwd` 文件或其他配置文件。有时还可以结合其他技术实现命令执行: ```php <?php // 存在风险的代码片段 $file = $_GET["file"]; include $file; ?> ``` 防御措施包括但不限于禁用危险功能、设置白名单以及严格校验传入变量[^3]。 #### 解决方案与防护建议 对于开发者而言,在编写涉及 `include` 的 Web 应用程序时应采取预防性编程实践,比如只接受预定义列表内的选项作为合法输入;而对于参赛者来说,识别潜在的安全弱点是解决问题的关键所在。寻找那些能够被篡改从而改变预期行为的地方,并尝试绕过现有的保护机制找到新的途径完成挑战目标[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值