攻防世界 MISC - Py-Py-Py

博客提及附件有一个pyc文件,起初以为是进行pyc反编译,使用uncompyle6进行反编译,最后得知需用新工具stegosaurus进行解密,最终得到Flag{HiD3_Pal0ad_1n_Python}。

附件一个pyc文件

开始以为是pyc反编译,使用uncompyle6反编译得到

import sys, os, hashlib, time, base64
fllag = '9474yeUMWODKruX7OFzD9oekO28+EqYCZHrUjWNm92NSU+eYXOPsRPEFrNMs7J+4qautoqOrvq28pLU='

def crypto(string, op='encode', public_key='ddd', expirytime=0):
    ckey_lenth = 4
    public_key = public_key and public_key or ''
    key = hashlib.md5(public_key).hexdigest()
    keya = hashlib.md5(key[0:16]).hexdigest()
    keyb = hashlib.md5(key[16:32]).hexdigest()
    keyc = ckey_lenth and (op == 'decode' and string[0:ckey_lenth] or hashlib.md5(str(time.time())).hexdigest()[32 - ckey_lenth:32]) or ''
    cryptkey = keya + hashlib.md5(keya + keyc).hexdigest()
    key_lenth = len(cryptkey)
    string = op == 'decode' and base64.b64decode(string[4:]) or '0000000000' + hashlib.md5(string + keyb).hexdigest()[0:16] + string
    string_lenth =
### 攻防世界 Misc `filecheck` 题目解法分析 攻防世界(XCTF)平台中的 `Misc` 类别题目通常涉及文件分析、隐写术、编码转换、加密解密等技术,而 `filecheck` 题目则可能围绕文件内容的校验机制展开。这类题目通常要求解题者绕过或伪造文件校验逻辑以获取 flag。 在类似题目中,常见的解题思路包括: 1. **分析文件结构**:首先需要对提供的文件进行深入分析,例如使用十六进制编辑器(如 WinHex、HxD)查看文件头信息,识别其格式和潜在的隐藏内容。例如某些题目中,flag 可能被嵌入在文件的特定偏移位置或通过特定编码方式隐藏在文件数据流中。 2. **理解校验机制**:许多 `filecheck` 类题目会设计一个校验函数,用于验证文件的完整性或特定格式。例如在 CTF 题目中,常见做法是将校验逻辑嵌入程序中,要求解题者逆向分析并构造符合条件的输入。例如以下代码片段展示了典型的校验逻辑: ```c unsigned int *__cdecl interesting_function(int *a1) { unsigned int *result; // eax unsigned int v2; // [esp+1Ch] [ebp-1Ch] BYREF unsigned int *v3; // [esp+20h] [ebp-18h] int *v4; // [esp+24h] [ebp-14h] int j; // [esp+28h] [ebp-10h] int i; // [esp+2Ch] [ebp-Ch] result = (unsigned int *)a1; v4 = a1; for (i = 0; i <= 6; ++i) { v2 = v4[i] ^ 0xDEADBEEF; result = &v2; v3 = &v2; for (j = 3; j >= 0; --j) result = (unsigned int *)putchar((char)(*((_BYTE *)v3 + j) ^ flag_data[4 * i + j])); } return result; } ``` 上述代码展示了一个 XOR 解密逻辑,通过逐字节异或操作提取 flag 数据。解题者需要理解该逻辑并编写相应的解密脚本。 3. **绕过文件校验逻辑**:在某些情况下,题目中会提供一个 PHP 脚本用于校验文件路径或内容,例如以下代码片段展示了常见的白名单校验机制: ```php <?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (!isset($page) || !is_string($page)) { echo "you can't see it"; return false; } if (in_array($page, $whitelist)) { return true; } $_page = mb_substr($page, 0, mb_strpos($page . '?', '?')); if (in_array($_page, $whitelist)) { return true; } $_page = urldecode($page); $_page = mb_substr($_page, 0, mb_strpos($_page . '?', '?')); if (in_array($_page, $whitelist)) { return true; } echo "you can't see it"; return false; } } if (!empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file'])) { include $_REQUEST['file']; exit; } else { echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />"; } ?> ``` 解题者可以通过构造特定请求(如 `file=hint.php?`)绕过校验逻辑并访问目标文件。 4. **隐写术与图像处理**:部分 `Misc` 题目涉及图像隐写术,例如使用 Photoshop 打开 GIF 图像并拼接帧内容以提取隐藏信息。例如某些题目中 flag 会被加密为 AES 格式,密码可能隐藏在图像或文档中,解密后即可获得 flag。 5. **脑筋急转弯与文本处理**:某些题目可能包含文本处理或脑筋急转弯元素,例如从文档中提取特定字符组合(如每行最后一个字符)作为密码或 flag 的一部分。 ### 总结 攻防世界 `Misc` 类别的 `filecheck` 题目通常结合文件分析、逆向工程、隐写术、加密解密等多种技术手段。解题者需具备基本的文件结构分析能力、编程技能以及对常见加密算法(如 XOR、AES)的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值