一天一道ctf 第43天(php字符串异或取反绕过)

本文介绍了如何在遇到PHP环境限制时,通过编码技巧绕过限制执行命令。涉及了GET参数的eval执行,PHP函数禁用的绕过方法,以及使用蚁剑进行webshell连接和命令执行。在尝试过程中,作者发现并利用了github资源来下载绕过函数禁用的文件,但最终未能直接执行目标命令,提示了可能存在的进一步绕过策略。

[极客大挑战 2019]RCE ME
点开题目就是源码

<?php
error_reporting(0);
if(isset($_GET['code'])){
   
   
            $code=$_GET['code'];
                    if(strlen($code)>40){
   
   
                                        die("This is too Long.");
                                                }
                    if(preg_match("/[A-Za-z0-9]+/",$code)){
   
   
                                        die
在 Bash 脚本中,字符串切片是一种常见的技术,可以用来绕过某些过滤机制。这种技术利用了 Bash 的参数扩展功能,通过指定字符串的起始位置和长度来提取子字符串。这种方法在 CTF(夺旗赛)中经常被用来绕过对特定字符的过滤,尤其是在命令执行漏洞利用中。 ### 基本语法 Bash 中的字符串切片使用以下语法: ```bash ${string:start:length} ``` - `string` 是要操作的字符串变量。 - `start` 是起始位置,从 0 开始计数。 - `length` 是要提取的字符数(可选)。 ### 示例 假设有一个字符串 `str="hello world"`,可以通过以下方式提取子字符串: - 提取 "hello": ```bash echo ${str:0:5} ``` - 提取 "world": ```bash echo ${str:6:5} ``` ### 绕过过滤限制 在某些情况下,如果直接使用某些被过滤的关键字(如 `flag` 或 `cat`),可以使用字符串切片技术来构造这些关键字。 #### 使用内置变量 Bash 提供了一些内置变量,可以帮助构造更复杂的字符串。例如,`$IFS`(内部字段分隔符)通常用于表示空格、制表符和换行符。通过结合这些内置变量,可以在一定程度上绕过过滤限制。 ##### 示例:构造 `/bin/cat` 假设直接使用 `/bin/cat` 被过滤,可以通过字符串拼接和切片来构造: ```bash IFS=' ' cmd="/bi${IFS}n/ca${IFS}t" $cmd /etc/passwd ``` 在这个例子中,`$IFS` 被用来替代空格,从而绕过对 `/bin/cat` 的直接过滤。 #### 使用变量替换 Bash 的变量替换功能也可以用来构造被过滤的字符串。例如,通过使用 `${#}` 或 `${?}` 等内置变量,可以生成数字,进而用于字符串切片。 ##### 示例:构造 `flag` 假设 `flag` 被过滤,可以通过以下方式构造: ```bash str="flaflag" echo ${str:0:4} # 输出 "flaf" echo ${str:4:4} # 输出 "lag" ``` 通过这种方式,可以将被过滤的字符串拆分成多个部分,然后分别构造。 ### 使用随机数和长度 在某些情况下,可以利用 `${RANDOM}` 变量生成随机数,并结合字符串长度来构造特定的字符串。 ##### 示例:构造 `cat` ```bash rand=${RANDOM} len=${#rand} echo ${rand:0:$len} # 输出随机数本身 ``` 虽然这个例子没有直接构造 `cat`,但它展示了如何利用随机数和长度来进行字符串操作。 ### 复杂示例 结合多个技术,可以构造出更复杂的命令。例如,假设 `cat` 和 `flag` 都被过滤,可以通过以下方式构造: ```bash IFS=' ' str1="ca${IFS}t" str2="fla${IFS}g" $str1 $str2 ``` 在这个例子中,`$IFS` 被用来替代空格,从而绕过对 `cat` 和 `flag` 的直接过滤。 ### 结论 通过使用 Bash 的字符串切片和变量替换功能,可以在一定程度上绕过过滤限制。这种方法在 CTF 比赛中非常有用,尤其是在处理命令执行漏洞时。理解这些技术可以帮助更好地进行渗透测试和安全研究。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值