2019红帽杯-MISC-WriteUp(更新中)

前言:

  前阵子玩了玩今年的红帽杯,题目质量很高,值得记录一下。

  题目见:https://github.com/DrsEeker/redhat2019

0x01: Advertising for marriage

 拿到题目,是一个500多M的RAW文件,可知这是一道内存取证题目,使用内存取证工具Volatility进行分析:

使用格式:Volatility -f [imgfile] [command]

  

发现是WindowsXPSP2,查看进程信息:

Volatility -f [imgfile] --profile=WinXPSP2 psscan

发现两个可疑进程:notepad.exe(记事本)和mspaint.exe(画图)

查看记事本内容:Volatility -f [imgfile] --profile=WinXPSP2x86 notepad

看到提示:????needmoneyandgirlfirend(吐槽一下,这里的girlfriend还打错了)

前四个字符不可知,dump画图进程:

Volatility -f [imgfile] --profile=WinXPSP2x86 memdump -p [pid] --dump-dir [outdir]

使用GIMP工具载入原始图像数据(先重命名后缀为data),具体操作:

调整位移可以调整图像在内存中的偏移,调整高度和宽度则是图像分辨率,先调整高度至一个适合的值,再调整宽度,再慢慢调整位移,可以得到进程在内存中的图像信息。

hint:每个宽度与高度均对应了一个分辨率,不同分辨率可以呈现的画面是不同的

经过我的多次调试后发现,把图像宽度调至960可以发现:

其中的图片是镜像的,这便是画图界面在内存中的图像信息,镜像反转后可以得到b1cx这四个字符,结合notepad中提取的hint可以得到:b1cxneedmoneyandgirlfirend

到现在并没有发现一些直截了当的信息,于是,转变方向,我们可以尝试查看一下桌面上有什么内容:

volatility -f [imgfile] --profile=[imgversion] filescan | grep [arg]

可以看到桌面上有Dump It.exe(就是这个程序生成的内存dump文件,即我们拿到的题目文件),HP-xxxx.raw(这个raw文件就是我们的题目文件了),vegetable.png(可疑,dump下来看看)

volatility -f [imgfile] --profile=[imgversion] dumpfiles -Q [file_offset] --dump-dir [outdir]

查看dump出的图片:

打开图片时遇到错误,提示CRC校验出错,猜测是高度或者宽度有问题,利用CRC爆破可以得到图片的正确高度为:

贴上脚本:

# -*- coding: utf-8 -*-
import binascii
import struct
crc32key = 0xB80A1736
height = 0
width = 0x11f
for i in range(0, 0xffff):
  height = struct.pack(‘>i‘, i)
  #width = struct.pack(‘>i‘,i)
  data = ‘\x49\x48\x44\x52‘ + struct.pack(‘>i‘,width) + height + ‘\x08\x06\x00\x00\x00‘ #爆破高度用
  #data = ‘\x49\x48\x44\x52‘ + width + struct.pack(‘>i‘,height) + ‘\x08\x06\x00\x00\x00‘ #爆破宽度用
  crc32result = binascii.crc32(data) & 0xffffffff
  if crc32result == crc32key:
    print(‘‘.join(map(lambda c: "%02X" % ord(c), height)))

在010editor中改好打开图片看到:

看到是模糊的flag,使用binwalk也没有什么发现,怀疑是LSB隐写,使用cloacked-pixel工具:

python extract [infile] [outfile] [pass]

可以看到

Base64解密得:

Virginia ciphertext:gnxtmwg7r1417psedbs62587h0

看到是维吉尼亚密码,由于维吉尼亚密码的秘钥只能是字母,所以从b1cxneedmoneyandgirlfirend剔除掉1再解密

可以得到

flag : flagisd7f1417bfafbf62587e0

原文地址:https://www.cnblogs.com/basstorm/p/11885798.html

时间: 2024-07-30 18:24:44

2019红帽杯-MISC-WriteUp(更新中)的相关文章

2019红帽杯部分wp

xx 程序首先取输入的前4个字符作为xxtea加密的密钥之后进行xxtea加密.接着进行位置置换操作,然后又进行了以3个为一组的异或 首先逆向解出xxtea加密之后的结果 #include<stdio.h> #include<Windows.h> int main() { int count = 0; int b[24]; int a[] = { 0xCE, 0xBC, 0x40, 0x6B, 0x7C, 0x3A, 0x95, 0xC0, 0xEF, 0x9B, 0x20, 0x

[ctf分享]最新2016华山杯CTF writeup

[技术分享]最新2016华山杯CTF writeup 2016-09-11 13:06:28 来源:安全客-FlappyPig 作者:安全客 阅读:12099次 点赞(3) 收藏(82) 作者:FlappyPig 稿费:700RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 2016 华山杯 网络安全技能大赛 解题报告 队伍: FlappyPig  Web渗透 0x01 打不过~ 添加type=”submin”,点击提交抓包 有一串字符串,base64->md5,19

红帽企业版6.5版中简单配置DHCP服务器

一.实验拓扑 RHEL6.5 --------------RHEL6.5服务端(vmnet4)---------------RHEL6.5客户端(vmnet4) 准备网络服务实验环境1. 安装2台RHEL6.5虚拟机        1)内存1G.硬盘80G.软件包(桌面.开发工具)        2)关闭防火墙.关闭SELinux机制 提示:修改 /etc/selinux/config,设置 SELINUX=permissive getenforce.setenforce        3)安装

W5500问题集锦(持续更新中)

在"WIZnet杯"以太网技术竞赛中,有非常多參赛者在使用中对W5500有各种各样的疑问,对于这款WIZnet新推出的以太网芯片,使用中大家是不是也一样存在下面问题呢?来看一看: 1. W5500不支持自己主动极性变换,有点失望-- 答: 事实上,仅仅要对方支持极性变换就能够实现,如今的设备不支持极性变换的非常少的. 你要是碰到个别老设备连不上,再换交叉线也不迟.基本上2000年以后的设备都没问题的啦~ 原帖来自:9MCU 2. W5500+STM32F0无法通信 问题描写叙述1:我如

PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/problem-sets/994805046380707840/problems 目录 (点击对应题目即可进入相应题解--小声BB--) L1-001 Hello World (5 分) L1-002 打印沙漏 (20 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5

痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手册/数据手册,官方EVK板设计文件,各种应用笔记,各种参考设计方案.培训视频.软件SDK开发包,官方IDE/CFG工具,第三方软件支持等应有尽有,如果这上面文档你都能全部仔细看一遍,软件都能下载用起来,不用怀疑,你就是资深专家了. 其中痞子衡特别推荐你把所有应用笔记都看一遍,这些笔记凝结了所有恩智浦

linux学习资料持续更新中

一.LINUX基础教程 1.老男孩系列免费视频: 1) linux高薪入门实战视频教程(第二部)老男孩linux教程 http://edu.51cto.com/course/course_id-1035-page-1.html 2) 跟着老男孩从0开始一步步实战深入学习linux运维(三) http://edu.51cto.com/lesson/id-11909.html linux学习资料持续更新中,布布扣,bubuko.com

Hello World!的各种编程语言程序(持续更新中……)

对于很多学习编程语言新手们,可能接触到的第一个程序就是"Hello World"的输出程序,笔者想在此篇简短的博文中介绍关于各种编程语言的"Hello World"输出程序. 至今,笔者仅仅接触过C++和Python两种编程语言,而且都仅仅是新手,所以此次只能写C++和Python两种语言的"Hello World"输出程序,但此篇博文会随着笔者学习的编程语言种类的增多而不断完善. 1. C++语言 #include<iostream>

linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen().erron存放一个正整数来保存上次出错的错误值. 对线程而言,每个线程都有专用的errno变量,不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified str