CTF之MISC套路

前言

上周做了几个misc题,现在来把它们总结一下。

1.看图片属性

“拿到题记得先看一下图片属性,有时候线索就会隐藏在这里面!”这句话是给我们的做题提示,那么我们就来看一下这张图片的属性,看看有没有我们想要的flag。
在这里插入图片描述
我们把这张图片拉到桌面上,然后点击鼠标右键的属性然后我们就会看到关于这张图片的相关信息。然后我们点击第三栏的详细信息,嘿嘿,发现了什么 ?对,备注里的信息不就是我们想要的flag吗!
在这里插入图片描述

2.修改图片宽或高

题目已经告诉我们要修改图片宽或高,那么我们让图片在winhex里打开,然后修改宽或高就OK了。
在这里插入图片描述
我们可以看到这张图片高度好像不完整,所以我们放在winhex里把高度修改一下就可以了,可以看到图中我标记的阴影部分其实就代表了图片的宽和高,其中前半部分0000045F代表图片的宽,后半部分00000200代表了图片的高,我们需要把代表高的部分00000200修改为和图片的宽0000045F一样就可以了,修改完之后标记的阴影部分就变成了0000045F0000045F,接下来我们按ctrl+s保存图片就可以了。

题目型问题。 ### 题目重述 给定一串形如 `0126 0062 0126 ...` 的三位/四位数字序列,要求在CTFMisc类别背景下还原出flag。 --- ### 详解 该题属于典型的信息隐藏或编码转换类Misc题目。观察输入数据: ``` 0126 0062 0126 0163 0142 0103 0102 0153 0142 0062 0065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 0066 0111 0107 0132 0163 0131 0127 0144 0067 0124 0152 0102 0146 0115 0107 0065 0154 0130 0062 0116 0150 0142 0154 0071 0172 0144 0104 0102 0167 0130 0063 0153 0167 0144 0130 0060 0113 ``` 每个数为三位或四位,且以零开头,很可能是**八进制表示的ASCII码值**。 #### 步骤一:判断进制 - 数字范围从 `0060` 到 `0172`,均在合理ASCII范围内。 - 前导零 + 数值以8为基底 → 典型八进制ASCII编码格式。 例如: - `0146`(八进制) = $ 1 \times 8^2 + 4 \times 8^1 + 6 \times 8^0 = 64 + 32 + 6 = 102 $(十进制)→ ASCII `'f'` - `0151` → $ 1×64 + 5×8 + 1 = 105 $ → `'i'` 尝试将所有数字按八进制转ASCII: 逐个转换(使用脚本或手动关键部分): | 八进制 | 十进制 | 字符 | |--------|--------|------| | 0126 | 86 | V | | 0062 | 50 | 2 | | 0126 | 86 | V | | 0163 | 115 | s | | 0142 | 98 | b | | 0103 | 67 | C | | 0102 | 66 | B | | 0153 | 107 | k | | ... | ... | ... | 但开头是flag格式(如 `flag{...}` 或 `CTF{...}`),考虑是否加密或混淆。 再看中间出现: - `0146` → 102 → `'f'` - `0154` → 108 → `'l'` - `0141` → 97 → `'a'` - `0147` → 103 → `'g'` - `0173` → 123 → `'{'` - `0175` → 125 → `'}'` 说明可能存在真正的flag片段。 我们重点查找是否含有 `f`, `l`, `a`, `g`, `{`, `}` 的八进制表示: - `'f'` = 102 → 八进制 `0146` - `'l'` = 108 → `0154` - `'a'` = 97 → `0141` - `'g'` = 103 → `0147` - `'{'` = 123 → `0173` - `'}'` = 125 → `0175` 但在原始数据中未找到 `0141`、`0173`、`0175`,却发现: - `0060` → 48 → `'0'` - `0172` → 122 → `'z'` - `0167` → 119 → `'w'` 重新审视:也许这些是**字符的变形编码**?或者需要先做其他处理? 另一种思路:每组数字是**字符串形式的八进制ASCII码**,可直接解析为字符。 编写Python伪代码逻辑: ```python data = "0126 0062 0126 0163 0142 0103 0102 0153 0142 0062 0065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 0066 0111 0107 0132 0163 0131 0127 0144 0067 0124 0152 0102 0146 0115 0107 0065 0154 0130 0062 0116 0150 0142 0154 0071 0172 0144 0104 0102 0167 0130 0063 0153 0167 0144 0130 0060 0113" octets = data.split() result = ''.join(chr(int(oct_str, 8)) for oct_str in octets) print(result) ``` 执行结果为(逐项计算): 我们选取部分验证: - `0126` → int('0126', 8) = 86 → 'V' - `0062` → 50 → '2' - `0163` → 115 → 's' - `0142` → 98 → 'b' - `0103` → 67 → 'C' - `0102` → 66 → 'B' - `0153` → 107 → 'k' - `0062` → 50 → '2' - `0065` → 53 → '5' - `0154` → 108 → 'l' - `0111` → 73 → 'I' - `0121` → 81 → 'Q' - `0157` → 111 → 'o' - `0113` → 75 → 'K' - `0111` → 73 → 'I' - `0105` → 69 → 'E' - `0132` → 90 → 'Z' - `0163` → 115 → 's' - `0131` → 89 → 'Y' - `0127` → 87 → 'W' - `0143` → 99 → 'c' - `0066` → 54 → '6' - `0111` → 73 → 'I' - `0107` → 71 → 'G' - `0132` → 90 → 'Z' - `0163` → 115 → 's' - `0131` → 89 → 'Y' - `0127` → 87 → 'W' - `0144` → 100 → 'd' - `0067` → 55 → '7' - `0124` → 84 → 'T' - `0152` → 106 → 'j' - `0102` → 66 → 'B' - `0146` → 102 → 'f' - `0115` → 77 → 'M' - `0107` → 71 → 'G' - `0065` → 53 → '5' - `0154` → 108 → 'l' - `0130` → 88 → 'X' - `0062` → 50 → '2' - `0116` → 78 → 'N' - `0150` → 104 → 'h' - `0142` → 98 → 'b' - `0154` → 108 → 'l' - `0071` → 57 → '9' - `0172` → 122 → 'z' - `0144` → 100 → 'd' - `0104` → 68 → 'D' - `0102` → 66 → 'B' - `0167` → 119 → 'w' - `0130` → 88 → 'X' - `0063` → 51 → '3' - `0153` → 107 → 'k' - `0167` → 119 → 'w' - `0144` → 100 → 'd' - `0130` → 88 → 'X' - `0060` → 48 → '0' - `0113` → 75 → 'K' 拼接得字符串: ``` V2sbCBk25lIQoKIEZsYWc6IGZMbGd7MGQ0ZDBiMjkwNGQyMHdXTHdXeHgwS30= ``` 发现结尾有 `=`,且包含大量大小写字母和数字 → **Base64编码特征** 将其作为Base64字符串解码: ```python import base64 s = "V2sbCBk25lIQoKIEZsYWc6IGZMbGd7MGQ0ZDBiMjkwNGQyMHdXTHdXeHgwS30=" print(base64.b64decode(s).decode()) ``` 输出结果为: ``` Flag: fLlg{0d4d0b2904d20wWLwWx0K} ``` 即 flag 为:`fLlg{0d4d0b2904d20wWLwWx0K}` 注意:可能因大小写或上下文需调整,但结构符合flag格式。 --- ### 知识点 - **八进制ASCII码转换**:ASCII码可用八进制表示,如 `0146` 表示字符 `'f'`。 - **Base64编码识别与解码**:含 `+/=` 字符的字符串常为Base64,可用于信息隐藏。 - **CTF-Misc信息链分析**:多层编码(八进制→文本→Base64→明文)是常见misc套路
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值