【CTF-MISC出题思路分享】匿于时之下

2024-01-13 02:10

本文主要是介绍【CTF-MISC出题思路分享】匿于时之下,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前段时间出隐写题的时候发现了一个很有趣的隐藏信息的地方,给大家分享一下

首先来新建一个txt文本,看看他的属性。在这里插入图片描述

下面那里可以藏信息呢?大小?位置?

NoNo咱今天就用利用时间来进行信息隐藏

首先来读取一下这个时间,在python中使用os库就可以直接读取创建时间、修改时间、访问时间。

import os
filename = "new.txt"
file_attr = os.stat(filename)#读取文件属性
print(file_attr)

打印之后得到以下内容:

os.stat_result(st_mode=33206, st_ino=1970324837900684, st_dev=40639268, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1652854599, st_mtime=1652854574, st_ctime=1652854574)

其中st_atime为访问时间,st_mtime为修改时间,st_ctime为创建时间

都是以unix时间戳(S)表示

单独提取出创建时间使用file_attr.st_ctime可以直接提取

如果需要转为标准格式%Y-%m-%d %H:%M:%S,需要导入time库

import os
import time
filename = "new.txt"
file_attr = os.stat(filename)#读取文件属性
create_time = file_attr.st_ctime#获取创建时间
create_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(create_time))#转为标准格式
print(create_time)

这样打印出来的结果为2022-05-18 14:16:14

其他修改时间、访问时间同理使用file_attr.st_mtime、file_attr.st_atime即可

(img-Ilcy9tvv-1654651827655)(assets/配图1-20220518151700-ppofcul.gif)]

刚刚说完读取,再来说说如何修改这些时间

最憨的方法是到了指定时间创建这个文件,是不是听起来就很憨

这样肯定是不行的,无法准确控制自己想要的时间

现在来谈谈如何修改,这里直接参考了网上的一篇文章以下代码[1]

import os
import time
from pywintypes import Time
from win32con import FILE_FLAG_BACKUP_SEMANTICS
from win32con import FILE_SHARE_WRITE
from win32file import CloseHandle
from win32file import CreateFile
from win32file import GENERIC_WRITE
from win32file import OPEN_EXISTING
from win32file import SetFileTime
def modify_file_create_time(filename, create_time_str, update_time_str, access_time_str):try:format_str = "%Y-%m-%d %H:%M:%S" # 时间格式f = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_WRITE, None, OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS, 0)create_time = Time(time.mktime(time.strptime(create_time_str, format_str)))update_time = Time(time.mktime(time.strptime(update_time_str, format_str)))access_time = Time(time.mktime(time.strptime(access_time_str, format_str)))SetFileTime(f, create_time, update_time, access_time)CloseHandle(f)print('update file time success:{}/{}/{}'.format(create_time_str, update_time_str,access_time_str))except Exception as e:print('update file time fail:{}'.format(e))
create_time = Time(time.mktime(time.strptime(create_time_str, format_str)))#新的创建时间
update_time = Time(time.mktime(time.strptime(update_time_str, format_str)))#新的修改时间
access_time = Time(time.mktime(time.strptime(access_time_str, format_str)))#新的访问时间
SetFileTime(f, create_time, update_time, access_time)#设置
if __name__ == '__main__':cTime = "2022-05-18 14:16:14" # 创建时间mTime = "2022-05-18 14:16:14" # 修改时间aTime = "2022-05-18 14:16:14" # 访问时间fName = r"new.txt" # 可以是文件也可以是文件夹print(os.path.isdir(fName))modify_file_create_time(fName, cTime, mTime, aTime)

说了这么多了,可以读取,又可以修改,那么信息要怎么隐藏呢?

(img-H6E3PJmt-1654651827655)(assets/image-20220518165609-nggoebl.png)]

现在我想把一段字符串flag{where_is_flag}隐藏到时间当中

经过一段头脑风暴产生了一个思路

每一个字符转为10进制,然后使用一个时间戳作为一个基础数,利用基础数+字符转为的10进制数,分别写入到19个文件中,并修改文件的创建时间、修改时间、访问时间

#创建一个空白文件
def createfile(filename):try:with open(filename, 'w') as f:passexcept Exception as e:print(e)sys.exit()

选一个2038年1月19日 11:03:00时间戳2147483000,这里后面取3个0是为了降低难度更好发现

flag{where_is_flag}转为10进制102 108 97 103 123 119 104 101 114 101 95 105 115 95 102 108 97 103 125

if __name__ == '__main__':testtime = 2147483000cmdstr =  "102 108 97 103 123 119 104 101 114 101 95 105 115 95 102 108 97 103 125"newpath = "./stego/"cmdstr = cmdstr.split(' ')#print(cmdstr)for i in tqdm(range(len(cmdstr))):filename = str(i)+'.txt'createfile(newpath+filename)#print(cmdstr[i])change_time = time.localtime(testtime+int(cmdstr[i]))format_str = "%Y-%m-%d %H:%M:%S"up_time = time.strftime("%Y-%m-%d %H:%M:%S",change_time)modify_file_create_time(newpath+filename, up_time, up_time, up_time)

运行之后就会在/stego下面产生19个文件,从外面看不明显,右键查看属性,第一个字符f对应的就是102。用前面讲到的查看文件属性的方法看看这个文件时间戳。

1

import os
filename = "D:\\pythonconda\\timesptest\\stego\\0.txt"
file_attr = os.stat(filename)#读取文件属性
create_time = file_attr.st_ctime#获取创建时间
print(create_time)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTCAo4RP-1654651827657)(assets/image-20220520103654-wpi3jbm.png)]

我们需要的是后面的102部分,也就是[7:10]部分,转为字符串之后截取这部分即可。也可以用得到的时间去减2147483000得到结果

然后加一个循环就有以下代码

import os
for i in range(19):filename = "D:\\pythonconda\\timesptest\\stego\\{0}.txt".format(i)file_attr = os.stat(filename)#读取文件属性create_time = str(file_attr.st_ctime)#获取创建时间print(chr(int(create_time[7:10])),end='')

1

达成了!达成了!"0kb"隐藏信息!在这里插入图片描述
在这里插入图片描述

参考资料:

[1]python如何修改文件时间属性_python_脚本之家 (jb51.net)

鸣谢:

CTF站点导航 | 猫捉鱼铃 (mzy0.com)
本文已授权I春秋使用

这篇关于【CTF-MISC出题思路分享】匿于时之下的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599908

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

图书管理系统系统分享

分享一个图书管理系统,Java、SpringBoot、Vue和MySQL开发的图书馆管理系统 gitee项目地址:https://gitee.com/yuanmomoya/open-source-project/tree/master/books-management-system GitHub项目地址:https://github.com/yuanmomoya/open-source-pro