SQCTF万文题解
字数 2343 2025-08-30 06:50:35

SQCTF 题解与知识点教学文档

1. MISC(杂项)

  • 工具与技巧

    • SilentEye:用于隐写解密。
    • 爆破PNG高度:修改PNG文件高度以显示隐藏内容。
    • CQR扫描:直接扫描二维码获取信息。
    • Audacity:分析音频文件,提取隐藏信息(如频谱图)。
    • Steganography工具:在线工具如 https://www.a-tools.net/Tool.php?Id=100 可解密隐写数据。
    • 文件尾隐藏数据:手动提取文件尾部附加的数据(如压缩包、Base64编码内容)。
    • 社工技巧:通过文件名、地图评论等线索获取Flag。
  • 典型题目

    • 王者荣耀ID搜索:通过游戏ID关联百度地图评论获取Flag。
    • 公众号互动:关注公众号发送特定消息获取Flag。
    • FFT/IFFT处理:视频帧通过傅里叶变换隐藏信息,需逆向恢复原始数据。
    • Piet语言:使用 npiet 工具直接解析图像程序。

2. Reverse(逆向工程)

  • 常见操作

    • Python解包与反编译:使用 uncompyle6pycdc 反编译高版本Python的 .pyc 文件。
    • Base64解码:解密编码后的字符串(如 NWVkMmJlNDUtMmU4My00OGQyLWI2MzEtYzA4OGU1MWVlOTY0)。
    • 迷宫求解:BFS算法寻找最短路径(如 sqctf{ddsssdssaasssddddddwd})。
    • TEA/XXTEA解密:处理自定义加密逻辑,需逆向密钥和算法。
    • AES-CBC解密:固定IV和密钥,Base64解码后分离IV与密文。
  • 典型题目

    • ezRe:Base64解码直接获取Flag。
    • 慕然回首:逆向迷宫生成逻辑,BFS求解路径。
    • 圣人当仁不让:逆向VM执行逻辑,逐字节变换(output_byte = (input_byte ^ 0xAA) + 3)。
    • ChaCha20解密:通过已知密钥和Nonce生成密钥流,XOR解密密文。

3. Crypto(密码学)

  • 编码与加密

    • Base家族:Base91 -> Base64 -> Base62 -> Base16 多层解码。
    • Rabbit加密:密钥为 233(B站梗)。
    • 阴阳怪气编码:特殊符号解码(如 SQCTF{xm!tql!xm!})。
    • 核心价值观编码:多次解码获取Flag。
    • RSA攻击:中国剩余定理(CRT)广播攻击、模数分解。
    • 椭圆曲线加密(ECC):暴力破解离散对数问题(如 secretKey=5720914)。
  • 典型题目

    • 小白兔白又白:多层Base解码后Rabbit解密。
    • 失落矿洞:ECC ElGamal解密,计算 x + y
    • 杰弗逊圆盘:通过密钥排列密码盘,爆破明文。

4. Web(Web安全)

  • 漏洞利用

    • 目录穿越../ 读取敏感文件(如 ..flag)。
    • 文件下载/DownloadServlet?filename=WEB-INF/web.xml 读取配置。
    • 日志文件包含?look=file:///var/log/nginx/access.log 注入PHP代码。
    • SSTI(模板注入):使用 fenjing 工具绕过过滤。
    • 反序列化逃逸:构造Payload覆盖属性(如 escaping 题目)。
    • 弱密钥Session伪造:Flask的 secret_key 已知时伪造Session。
  • 典型题目

    • Upload_Level1/2:修改文件后缀绕过前端验证(如 .jpg.php)。
    • 唯一:模糊测试参数,SSTI注入。
    • 自私的小s:PHP反序列化私有属性逃逸,执行任意代码。
    • pickle反序列化:Base64解码后执行Python pickle载荷。

5. PWN(二进制利用)

  • 漏洞类型

    • 栈溢出:覆盖返回地址跳转后门函数(如 sqctf{f6faa9df9a684cacb74b235c9cba4652})。
    • SROP(Sigreturn):构造 SigreturnFrame 执行 execve("/bin/sh")
    • Shellcode注入:写入RWX内存并跳转执行(如 mov rdi, 0x68732f2f6e69622f)。
    • 格式化字符串:泄露栈数据或覆盖地址。
  • 典型题目

    • 当时只道是寻常:SROP利用系统调用。
    • 赌书消得泼茶香:Base64解码后栈溢出,ROP链跳转后门。
    • 萧萧黄叶闭疏窗:Shellcode写入可执行内存并触发。

6. 通用技巧

  • 工具链

    • FFmpeg:视频帧提取与合成。
    • 010 Editor:分析文件头尾异常。
    • sqlmap:自动化SQL注入。
    • jadx:APK反编译。
    • flask-unsign:伪造Flask Session。
  • 编码与解码

    • Hex/Binary转换7f1f...f2d1 转二进制。
    • 异或(XOR)(input_byte ^ 0xAA) + 3
    • PKCS#7填充:AES-CBC模式下的填充处理。

总结

  • 关键点:逆向分析需结合动态调试(如GDB)、静态分析(IDA/Ghidra);Web漏洞需关注输入点过滤与上下文逻辑;密码学题目需熟悉编码链和数学攻击(如CRT)。
  • Flag格式:注意大小写(如 SQCTFsqctf)和特殊字符(%3d 需URL解码)。
  • 练习建议:从简单题目(如Base解码、文件隐写)过渡到复杂场景(SROP、ECC解密)。
SQCTF 题解与知识点教学文档 1. MISC(杂项) 工具与技巧 : SilentEye :用于隐写解密。 爆破PNG高度 :修改PNG文件高度以显示隐藏内容。 CQR扫描 :直接扫描二维码获取信息。 Audacity :分析音频文件,提取隐藏信息(如频谱图)。 Steganography工具 :在线工具如 https://www.a-tools.net/Tool.php?Id=100 可解密隐写数据。 文件尾隐藏数据 :手动提取文件尾部附加的数据(如压缩包、Base64编码内容)。 社工技巧 :通过文件名、地图评论等线索获取Flag。 典型题目 : 王者荣耀ID搜索 :通过游戏ID关联百度地图评论获取Flag。 公众号互动 :关注公众号发送特定消息获取Flag。 FFT/IFFT处理 :视频帧通过傅里叶变换隐藏信息,需逆向恢复原始数据。 Piet语言 :使用 npiet 工具直接解析图像程序。 2. Reverse(逆向工程) 常见操作 : Python解包与反编译 :使用 uncompyle6 或 pycdc 反编译高版本Python的 .pyc 文件。 Base64解码 :解密编码后的字符串(如 NWVkMmJlNDUtMmU4My00OGQyLWI2MzEtYzA4OGU1MWVlOTY0 )。 迷宫求解 :BFS算法寻找最短路径(如 sqctf{ddsssdssaasssddddddwd} )。 TEA/XXTEA解密 :处理自定义加密逻辑,需逆向密钥和算法。 AES-CBC解密 :固定IV和密钥,Base64解码后分离IV与密文。 典型题目 : ezRe :Base64解码直接获取Flag。 慕然回首 :逆向迷宫生成逻辑,BFS求解路径。 圣人当仁不让 :逆向VM执行逻辑,逐字节变换( output_byte = (input_byte ^ 0xAA) + 3 )。 ChaCha20解密 :通过已知密钥和Nonce生成密钥流,XOR解密密文。 3. Crypto(密码学) 编码与加密 : Base家族 :Base91 -> Base64 -> Base62 -> Base16 多层解码。 Rabbit加密 :密钥为 233 (B站梗)。 阴阳怪气编码 :特殊符号解码(如 SQCTF{xm!tql!xm!} )。 核心价值观编码 :多次解码获取Flag。 RSA攻击 :中国剩余定理(CRT)广播攻击、模数分解。 椭圆曲线加密(ECC) :暴力破解离散对数问题(如 secretKey=5720914 )。 典型题目 : 小白兔白又白 :多层Base解码后Rabbit解密。 失落矿洞 :ECC ElGamal解密,计算 x + y 。 杰弗逊圆盘 :通过密钥排列密码盘,爆破明文。 4. Web(Web安全) 漏洞利用 : 目录穿越 : ../ 读取敏感文件(如 ..flag )。 文件下载 : /DownloadServlet?filename=WEB-INF/web.xml 读取配置。 日志文件包含 : ?look=file:///var/log/nginx/access.log 注入PHP代码。 SSTI(模板注入) :使用 fenjing 工具绕过过滤。 反序列化逃逸 :构造Payload覆盖属性(如 escaping 题目)。 弱密钥Session伪造 :Flask的 secret_key 已知时伪造Session。 典型题目 : Upload_ Level1/2 :修改文件后缀绕过前端验证(如 .jpg.php )。 唯一 :模糊测试参数,SSTI注入。 自私的小s :PHP反序列化私有属性逃逸,执行任意代码。 pickle反序列化 :Base64解码后执行Python pickle载荷。 5. PWN(二进制利用) 漏洞类型 : 栈溢出 :覆盖返回地址跳转后门函数(如 sqctf{f6faa9df9a684cacb74b235c9cba4652} )。 SROP(Sigreturn) :构造 SigreturnFrame 执行 execve("/bin/sh") 。 Shellcode注入 :写入RWX内存并跳转执行(如 mov rdi, 0x68732f2f6e69622f )。 格式化字符串 :泄露栈数据或覆盖地址。 典型题目 : 当时只道是寻常 :SROP利用系统调用。 赌书消得泼茶香 :Base64解码后栈溢出,ROP链跳转后门。 萧萧黄叶闭疏窗 :Shellcode写入可执行内存并触发。 6. 通用技巧 工具链 : FFmpeg :视频帧提取与合成。 010 Editor :分析文件头尾异常。 sqlmap :自动化SQL注入。 jadx :APK反编译。 flask-unsign :伪造Flask Session。 编码与解码 : Hex/Binary转换 : 7f1f...f2d1 转二进制。 异或(XOR) : (input_byte ^ 0xAA) + 3 。 PKCS#7填充 :AES-CBC模式下的填充处理。 总结 关键点 :逆向分析需结合动态调试(如GDB)、静态分析(IDA/Ghidra);Web漏洞需关注输入点过滤与上下文逻辑;密码学题目需熟悉编码链和数学攻击(如CRT)。 Flag格式 :注意大小写(如 SQCTF 或 sqctf )和特殊字符( %3d 需URL解码)。 练习建议 :从简单题目(如Base解码、文件隐写)过渡到复杂场景(SROP、ECC解密)。