首页 > 其他分享 >[SWPUCTF 2021 新生赛]finalrce

[SWPUCTF 2021 新生赛]finalrce

时间:2023-08-23 21:23:51浏览次数:44  
标签:输出 code SWPUCTF finalrce tee 命令 command 2021 txt

[SWPUCTF 2021 新生赛]finalrce

题目来源:nssctf

题目类型:web

涉及考点:RCE

1. 上来先做代码审计

<?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);
    }
}
>

可以看到题目要求GET传入一个参数,且过滤了一系列字符串

介绍一下exec()函数:

exec(string $command, array &$output = null, int &$result_code = null): string|false

exec() 执行 command 参数所指定的命令。如果提供了 output 参数, 那么会用命令执行的输出填充此数组, 每行输出填充数组中的一个元素。如果同时提供 outputresult_code 参数,命令执行后的返回状态会被写入到result_code

返回命令执行结果的最后一行内容。

因此我们知道直接传入命令是没有回显的,这也是标签打上未回显RCE的原因

这里需要用到一个tee命令

tee命令用于读取标准输入的数据,并将其内容输出成文件。

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

接下来我们可以构造payload了

2. 构造payload

基本结构为:command | tee file.txt

因为题目没过滤 | , 这是一个管道命令符号,用于将前一个命令的输出作为后一个命令的输入

那么这句话的意思就是将command我们需要执行的命令的输出作为tee命令的输入,tee命令再将其存到file.txt里

  • 绕过ls:
/?url=l\s / |tee 1.txt

这里这个转义字符 \ 是用于在外壳程序中转移控制字符,使控制字符成为字面量,而失去其在外壳程序中控制符的含义(官方解释)

传入后我们再访问/1.txt

  • 看到flag的位置了,且没过滤tac,于是直接读取:
/?url=tac /flllll\aaaaaaggggggg |tee 2.txt

注意这里la之间也需要绕过

再访问2.txt得到flag:

NSSCTF{1e4b95b2-d2e0-4af5-b5db-21c568a3d5f3}

日期:2023.8.23

作者:y0Zero

标签:输出,code,SWPUCTF,finalrce,tee,命令,command,2021,txt
From: https://www.cnblogs.com/bkofyZ/p/17652795.html

相关文章

  • namomo camp day1(2021GCPC) BAIDHG
    namomocampday1目录namomocampday1B-BrexitingandBrenteringA-AmusementArcadeI-Monty'sHallD-ExcursiontoPorvooH-LookingforWaldoG-Killjoys'ConferenceB-BrexitingandBrentering字符串替换voidsolve(){strings;cin&......
  • 2021/08/23
    <WS2tcpip.h>和<winsock2.h>是用于Windows套接字编程的两个不同的头文件,它们提供了不同层次的网络编程功能。下面是它们的主要区别:<winsock2.h>:包含了最基本的Winsock函数和结构,用于套接字编程。提供了底层的套接字操作,例如socket()、bind()、listen()、accept()、c......
  • Adobe Prelude2021下载-Adobe Prelude2021最新版下载 永久安装包
    软件功能使用Prelude整理您的媒体并创建粗剪集合。了解如何使用Prelude媒体管理器工具来确保您的PremierePro项目从一开始就井井有条。整理剪辑、子剪辑和序列。了解Prelude的剪辑命名和元数据功能,并了解创建子剪辑、构建粗剪集合并将集合作为序列发送到PremierePro以......
  • 在2021应该怎样配置 Favicon:用六个文件来适配大多数需求
    转载:HowtoFaviconin2023:Sixfilesthatfitmostneeds—MartianChronicles,EvilMartians’teamblog是时候重新思考如何为现代浏览器配置一套favicon并且阻止发疯的图标生成器。今天,仅仅只是为了在浏览器tab栏和触控屏上显示一个小小的网站logo,前端开发者就必须......
  • 8.22 [CSP-S 2021] 交通规划 题解
    #include<bits/stdc++.h>usingnamespacestd;usingpii=pair<int,int>;constexprintN=3e5+5,S=2e3+5,K=1e2+5,INF=0x3f3f3f3f;intn,m,T,poi[N];inthed[N],nxt[N<<2],rch[N<<2],val[N<<2],idx;vo......
  • [CSP-J 2021] 网络连接 题解
    传送门早期题解,转自博客QwQ本蒟蒻为数不多过了的黄题,祝贺!!!题面[CSP-J2021]网络连接题目描述TCP/IP协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Client)。服务机......
  • [SWPUCTF 2021 新生赛]hardrce
    [SWPUCTF2021新生赛]hardrce题目来源:nssctf题目类型:web涉及考点:rec1.上来直接代码审计<?phpheader("Content-Type:text/html;charset=utf-8");error_reporting(0);highlight_file(__FILE__);if(isset($_GET['wllm'])){$wllm=$_GET['wllm'];......
  • 在 win10 2021 LTSC 上安装配置 wsl2 和 ubuntu
    在win102021LTSC上安装配置wsl2和ubuntu的过程:win10系统启用wsl2:wsl--install----no-distribution(安装wsl2,会自动打开系统feature:wsl子系统,虚拟机平台.不再需要去控制面板--启用windows特性)设置wsl默认版本为wsl2:wsl--set-defa......
  • [SWPUCTF 2021 新生赛]error
    [SWPUCTF2021新生赛]error题目来源:nssctf题目类型:web涉及考点:SQL注入1.题目给了一个输入框,随便传点东西通过上面三次传入,我们可以判断闭合类型为单引号闭合发现没有回显位,但有报错提示,因此尝试报错注入2.extractValue()报错注入爆库名1'unionselect1,ext......
  • nacos权限绕过漏洞(CVE-2021-29441)修复过程
    1、开启服务身份识别功能修改nacos的application.properties配置文件nacos.core.auth.enabled=true,2、重启nacos进入nacos下的bin目录单机模式shstartup.sh-mstandalone集群shstartup.shNacos3、注册及配置中心开启权限认证,所有服务都要改重新发版......