BUUCTF题解之rsarsa

题目描述

将文件解压缩以后我们可得题目

Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.


p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483

q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407

e =  65537

c =  832082989951746041747735902982036393605400248712561268928896613457424033149298619391004926666056473166465764865262174570063768422808697285817267464015837058999417682141387422596893348407356335530538876418476511737762518202930872128856701803674068074067659236389731613758173927377478327627

<think>好的,我现在需要解决用户关于BUUCTF中“Ping Ping Ping”题目的问题。首先,我要回忆一下这个题目的基本情况。根据用户提供的引用内容,题目主要涉及命令执行和绕过过滤的技巧。题目可能要求用户通过构造特定的命令来获取flag,而关键点在于如何绕过对空格的过滤。 用户引用了两个资料,其中提到过滤了空格,可以使用如${IFS}、$IFS$1、%09(Tab的URL编码)、%20(空格的URL编码)或者重定向符号来替代空格。另外,第二个引用提到目标服务器是Linux系统,严格区分大小写,可能需要查看index.php文件的内容。 接下来,我需要整理常见的绕过空格的方法,并结合题目中的过滤情况。可能的步骤包括: 1. 尝试执行基本的ping命令,但题目可能限制了命令的参数,需要利用管道或其他符号来执行额外命令。 2. 绕过空格过滤:使用${IFS}、${IFS$1}、%09等替代空格分隔命令参数。 3. 查看当前目录下的文件,使用ls命令,可能需要绕过空格的限制。 4. 读取flag文件,比如index.php,使用cat命令,同样需要注意空格的替代方式。 5. 如果遇到文件名中有特殊字符,可能需要用引号或转义字符来处理。 此外,可能还需要考虑其他过滤规则,比如是否过滤了分号、管道符等,这时候需要尝试其他连接命令的方式,如使用&&或者%0a(换行符的URL编码)来分割命令。 举个例子,假设题目允许用户输入IP地址,但实际会拼接成ping的命令执行。用户可以通过注入命令,比如在IP后加上;ls,但空格被过滤,所以需要用${IFS}代替。因此,payload可能类似于127.0.0.1;cat${IFS}index.php,从而读取文件内容。 另外,如果题目过滤了某些符号,比如$,可能需要换用其他替代方式,比如%09。或者使用变量拼接的方式绕过关键字过滤,比如将cat拆分为a=c;b=at; $a$b filename。 还需要注意,Linux系统区分大小写,所以尝试用大写绕过可能无效,但可以检查是否有其他命令可用,比如使用more代替cat,或者使用grep搜索文件内容。 总结可能的解题步骤: - 测试命令注入点,检查是否能够执行任意命令。 - 绕过空格限制,使用替代符号。 - 列出目录,找到flag文件的位置。 - 读取flag文件的内容,可能需要处理特殊字符或进一步绕过过滤。 在构造payload时,可能需要多次尝试不同的绕过方法,直到找到未被过滤的方式。同时,需要注意题目是否有其他过滤规则,如禁止某些命令或字符,这时候需要灵活调整策略。</think>### BUU CTF "Ping Ping Ping" 题目解析 #### 1. **题目背景** 题目通常要求通过Web参数注入实现命令执行,目标是通过绕过过滤规则读取服务器上的flag文件(如`flag.php`或`index.php`)。关键限制包括**空格过滤**和**特殊字符限制**。 --- #### 2. **解题步骤** ##### **Step 1: 测试命令注入** 尝试通过参数注入分隔符(如`;`、`|`、`%0a`)执行额外命令: ```bash # 示例:输入IP参数为 "127.0.0.1;ls" ping=127.0.0.1;ls ``` 若返回目录列表,说明注入成功[^2]。 ##### **Step 2: 绕过空格过滤** 题目可能过滤空格,需使用替代符号: - **方法1**: `$IFS` 或 `${IFS}` 示例:`cat$IFSindex.php` - **方法2**: `%09`(Tab的URL编码) 示例:`cat%09index.php` - **方法3**: 重定向符号 `<` 示例:`cat<index.php` [^1] ##### **Step 3: 列出目录文件** 确认flag文件名(可能为`flag.php`或`index.php`): ```bash # 使用ls命令 ping=127.0.0.1;ls ``` ##### **Step 4: 读取文件内容** 通过`cat`或`tac`命令读取文件,绕过空格限制: ```bash # 示例1:使用${IFS} ping=127.0.0.1;cat${IFS}index.php # 示例2:使用%09 ping=127.0.0.1;cat%09index.php ``` ##### **Step 5: 绕过其他过滤** - **过滤`cat`**: 使用`tac`、`more`、`tail`等替代。 - **过滤`flag`**: 使用通配符`*`或变量拼接: ```bash # 通配符示例 ping=127.0.0.1;cat${IFS}f* # 变量拼接示例(a=fl;b=ag; cat$a$b.php) ping=127.0.0.1;a=fl;b=ag;cat$a$b.php ``` --- #### 3. **最终Payload示例** 假设flag在`index.php`中且过滤了空格: ```bash # 使用${IFS}绕过空格 ping=127.0.0.1;cat${IFS}index.php # 或使用%09 ping=127.0.0.1;cat%09index.php ``` 返回结果中搜索`flag{`或`$flag`即可找到flag。 --- #### 4. **关键技巧总结** | 过滤项 | 绕过方法 | |-------------|-----------------------------| | 空格 | `$IFS`, `%09`, `<` | | 命令关键词 | 通配符`*`, 变量拼接 | | 文件名 | 引号包裹(`"flag.php"`) | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值