[SWPUCTF 2021 新生赛]finalrce
<?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:忽略中断信号。
使用示例
基本用法: 将
echo的输出同时显示在终端和文件中:echo "Hello World" | tee output.txt这会将 "Hello World" 输出到终端,并同时写入
output.txt文件。追加到文件: 使用
-a选项将内容追加到文件中:echo "Another line" | tee -a output.txt这会将 "Another line" 添加到
output.txt文件的末尾,而不会覆盖原有内容。从其他命令获取输出: 将
ls命令的输出同时传递给tee命令:ls -l | tee output.txt这会将
ls -l的输出显示在终端上,并保存到output.txt文件中。多个文件: 将输出同时写入多个文件:
echo "Log message" | tee file1.txt file2.txt这会将 "Log message" 同时写入
file1.txt和file2.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的更多相关文章
- [SWPUCTF 2021 新生赛]jicao
CTF web安全 阅读代码可知当传入一个post型的参数id与wllmNB相等并且传入一个get型的参数json: 但是这里有一个函数json_decode,上网搜索可知json_decode这个函 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告
题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音? ...
- 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 ...
- [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist
[ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga
[ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]usualCrypt
[ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_4010 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]rome
[ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]easyre
[ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...
- 2021江西省赛线下赛赛后总结(Crypto)
2021江西省赛线下赛 crypto1 题目: from random import randint from gmpy2 import * from Crypto.Util.number impor ...
随机推荐
- tsconfig.json报错问题
tsconfig.json报错问题 前言 创建 tsconfig.json 配置文件时,VS Code 会自动检测当前项目当中是否有ts文件,若没有则报错,提示用户需要创建一个ts文件后,再去使用ty ...
- Golang数组去重&切片去重
合并两个整型切片,返回没有重复元素的切片,有两种去重策略 1. 通过双重循环来过滤重复元素(时间换空间) // 通过两重循环过滤重复元素 func RemoveRepByLoop(slc []int) ...
- 有关js的双向绑定解除方法
最近碰到了一个bug var persons = [{ number: 1, age: 11, name: "wanghaha", money: -1 }, { number: 2 ...
- docker中 启动所有的容器命令
docker中 启动所有的容器命令 docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 关闭所有的容器命令 ...
- XWorker - 人机协同的共生系统
这是XWorker的定位,让AI写的,因为动态模型和XWorker对AI本身也有特殊意义,所以让AI写也是可以的.部分是AI的幻觉,如(四.重塑产业实践),XWorker还没实现这些.之所以保留不动, ...
- 异常的两种处理方式--java进阶day08
1.异常的默认处理流程 java中,对于异常的默认处理方式是--向上抛出 之前我们说过,异常都是类,当某个程序出错后,就会自动生成该异常对象,而这个异常对象就如同一颗雷 . java的异常默认处理方式 ...
- AspNetCore MVC 跨域
通过XMLHttpRequest或者ajax去请求一个AspNetCore API接口服务时,Firefox提示我 已拦截跨源请求:同源策略禁止读取位于 http://localhost:33694/ ...
- datasnap的回调广播
感觉中的datasnap千孔百疮,到xe10已经具备冲击成千上万用户并发的能力了.应该放心用于项目实战了.补课研究10.1 datasnap开发手册. 用到的方法: (1)TDBXCallback机制 ...
- mongo db集群故障选举分析
转载请注明出处: 一.MongoDB集群基础架构 1. 副本集(Replica Set)核心原理 节点角色: Primary:唯一可写节点,处理所有写操作和默认读请求 Secondary:异步复制Pr ...
- 基于SaaS纯BS架构的全院级PACS系统
2014年曾经做过一版简单的Dicom Web Viewer,之前的Web版本由于技术和功能的极限性,仅能简单的运用于临床阅片和患者的电子胶片使用,无法普及到放射和超声等影像科室.影像科 ...