<?php
highlight_file(__FILE__);
if(isset($_GET['url']))
{
$url=$_GET['url'];
if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url))
{
echo "Sorry,you can't use this.";
}
else
{
echo "Can you see anything?";
exec($url);
}
}

过滤了很多东西,直接读文件和反弹shell不太能用了,并且这里如果直接取反的话是无回显的,所以我们要么写文件要么反弹shell,但是正常写文件的>符号被过滤,反弹shell的bash、nc、&、>等符号都被过滤了,我直接无从下手了

这里就需要绕过关键字过滤,看了一下大佬们的wp

转义符\绕过

转义字符是用于在字符串中表示特殊字符的符号。它通常以反斜杠(\)开头,后面跟随一个特定的字符,以表示该字符的特殊含义或防止其被解释为其他含义。在不同的编程语言或环境中,转义字符的实际含义可能会有所不同,但在许多情况下,它们用来处理以下几种情况:

1. 表示特殊字符:

某些字符在字符串中有特殊的意义,使用转义字符可以让它们被当作普通字符来处理。例如:

  • \':表示单引号字符。

  • \":表示双引号字符。

  • \\:表示反斜杠字符。

2. 代表不可见或控制字符:

转义字符还可以用来表示不可见或控制字符,如:

  • \n:换行符。

  • \t:制表符。

  • \r:回车符。

3. 编码字符:

某些程序或语言支持通过转义字符来表示Unicode字符,如:

  • \uXXXX:表示对应的Unicode字符,其中XXXX是四位十六进制数字。

示例:
 command | tee [OPTION]... [FILE]...  

在PHP中,转义字符在字符串中用来处理复杂的字符:

 $example = "He said, \"Hello, World!\""; // 双引号需要转义
$path = "C:\\Program Files\\MyApp"; // 反斜杠需要转义

tee命令绕过>过滤

我们正常写文件要用到>符号,这里被过滤了,我们可以利用linux系统的tee命令来写文件

tee 命令是 Linux 中一个非常有用的命令行工具,它用于从标准输入读取数据,并将其同时输出到标准输出(通常是终端)和一个或多个文件中。它的名称来自于字母“T”,形象地表示数据分流的过程。

基本语法
 command | tee [OPTION]... [FILE]... 
 
常用选项
  • -a:将输出追加到文件末尾,而不是覆盖文件。

  • -i:忽略中断信号。

使用示例
  1. 基本用法: 将 echo 的输出同时显示在终端和文件中:

     echo "Hello World" | tee output.txt  

    这会将 "Hello World" 输出到终端,并同时写入 output.txt 文件。

  2. 追加到文件: 使用 -a 选项将内容追加到文件中:

     echo "Another line" | tee -a output.txt 
     

    这会将 "Another line" 添加到 output.txt 文件的末尾,而不会覆盖原有内容。

  3. 从其他命令获取输出: 将 ls 命令的输出同时传递给 tee 命令:

     ls -l | tee output.txt  

    这会将 ls -l 的输出显示在终端上,并保存到 output.txt 文件中。

  4. 多个文件: 将输出同时写入多个文件:

     echo "Log message" | tee file1.txt file2.txt  

    这会将 "Log message" 同时写入 file1.txtfile2.txt

解题

知道怎么绕过关键字过滤本题解法就一目了然了

首先查看根目录文件

 ?url=l\s / | tee 1.txt

然后我们访问1.txt就可以看到回显内容,看到flag文件flllllaaaaaaggggggg,我们访问

 ?url=tac /flllll\aaaaaaggggggg | 1.txt

由于la被过滤,所以l和a中间要加转义符,访问1.txt,拿到flag

[SWPUCTF 2021 新生赛]finalrce的更多相关文章

  1. [SWPUCTF 2021 新生赛]jicao

    CTF web安全 阅读代码可知当传入一个post型的参数id与wllmNB相等并且传入一个get型的参数json: 但是这里有一个函数json_decode,上网搜索可知json_decode这个函 ...

  2. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  3. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  4. Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist

    [ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...

  6. [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga

    [ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...

  7. [BUUCTF]REVERSE——[ACTF新生赛2020]usualCrypt

    [ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_4010 ...

  8. [BUUCTF]REVERSE——[ACTF新生赛2020]rome

    [ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; ...

  9. [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

    [ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...

  10. 2021江西省赛线下赛赛后总结(Crypto)

    2021江西省赛线下赛 crypto1 题目: from random import randint from gmpy2 import * from Crypto.Util.number impor ...

随机推荐

  1. Golang json转换时间格式

    在开发中,将时间转换成json时,默认是把时间转换为 RFC3339 格式 2018-01-14T21:45:54+08:00 这个貌似是GO的诞生的时间 先来看看time包中对格式的常量定义 con ...

  2. Delphi 模糊查询和字段查询

    procedure TFrmain.scGPEdit1Change(Sender: TObject); var ASql, AKey: string; //模糊查询和字段查询 const vsql1: ...

  3. Ubuntu下Ibus和fcitx的奇葩问题

    最近装了个Ubuntu,捉鸡的输入法令人哀伤. 于是乎,卸载了自带Ibus和fcitx出现各种问题,留爪. 首先,卸载了Ibus,会出现的问题如下: 注销/重启系统有问题 系统设置菜单选项缺失 -&g ...

  4. [COCI2014-2015#2] MOBITEL 题解

    题目大意 有一只蚂蚱,它把手机掉到了水坑里.然后它把手机捞出来,发现手机键盘都坏了. 那么手机没有坏之前就是介个样子的: 我们想打字的话就需要按下相应的数字键.比如说我们想打出 "a&quo ...

  5. Nerf和3DGS神经重建技术在自动驾驶模拟中的应用

    验证自动驾驶软件需要数百万公里的测试.这不仅意味着系统开发周期长,而且系统的复杂度也会不断增加,同时,大规模的实车测试也会耗费巨量的资源并且可能会面临未知的安全问题.aiSim这样的虚拟仿真工具可以减 ...

  6. 基于Surprise和Flask构建个性化电影推荐系统:从算法到全栈实现

    一.引言:推荐系统的魔法与现实意义 在Netflix每年节省10亿美元内容采购成本的背后,在YouTube占据用户80%观看时长的推荐算法中,推荐系统正悄然改变内容消费模式.本文将带您从零开始构建一个 ...

  7. MQTT服务器 apache-apollo

    apache-apollo下载 下载地址 http://archive.apache.org/dist/activemq/activemq-apollo/1.7.1/ 原来的官网地址下载不到apach ...

  8. 海康摄像头SDK在Linux、windows下的兼容问题(二)已解决

    上一篇提出的问题,在前几天解决了. 海康的技术人员给出了指导,在Linux库加载失败的时候,需要在代码中手动指定配置文件. 库文件加载说明] // 1. lib文件夹里面所有库文件libhcnetsd ...

  9. nacos安装

    linux-docker 下载nacos docker pull nacos/nacos-server:v2.2.3 `` ## 下载git脚本 ```shell cd /prod mkdir nac ...

  10. .net core workflow流程定义

    .net core workflow流程定义 WikeFlow官网:http://www.wikesoft.com WikeFlow学习版演示地址:http://workflow.wikesoft.c ...