当前位置: 首页 > article >正文

XCTF:3-1[WriteUP]

从题目中获取文件

使用file命令查看文件类型

修改后缀为.rar后进行解压缩


再次使用file命令查询该文件的类型

再次修改后缀为.pcap或者.pcapng

使用wireshark打开,直接搜索flag字样

 在多个数据包里发现了flag.rar、flag.txt等文件

尝试使用http导出文件


有一个flag.rar文件

 

但这是一个加密了的rar文件

里面虽然有flag.txt,但是我们没有密码


找到之前搜索flag,找到flag.txt字样的数据包

进行TCP Stream的追踪

仔细分析该TCP流,发现了一串不知名的base64代码

19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo=

继续往下翻

 

发现了这段python代码,贴在下面:

# coding:utf-8
.

.
__author__ = 'YFP'
.

.
from Crypto import Random
.
from Crypto.Cipher import AES
.

.
import sys
.
import base64
.

.
IV = 'QWERTYUIOPASDFGH'
.

.
def decrypt(encrypted):
.
  aes = AES.new(IV, AES.MODE_CBC, IV)
.
  return aes.decrypt(encrypted)
.

.
def encrypt(message):
.
  length = 16
.
  count = len(message)
.
  padding = length - (count % length)
.
  message = message + '\0' * padding
.
  aes = AES.new(IV, AES.MODE_CBC, IV)
.
  return aes.encrypt(message)
.

.
str = 'this is a test'
.

.
example = encrypt(str)
.

.
print(decrypt(example))

最后还有一段:祝你成功(谢谢你啊,笑)


结合所得信息解题

先对开头从TCP流中获取到的base64代码尝试进行解码

很显然,直接进行解码并不能得到任何有效信息

那问题就应该出在python代码上了

对获取得到的python代码,进行修改,使其能正常运行:

# coding:utf-8

from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64

IV = b'QWERTYUIOPASDFGH'

def decrypt(encrypted):
  aes = AES.new(IV, AES.MODE_CBC, IV)
  return aes.decrypt(encrypted)

def encrypt(message):
  length = 16
  count = len(message)
  padding = length - (count % length)
  message = message + b'\0' * padding
  aes = AES.new(IV, AES.MODE_CBC, IV)
  return aes.encrypt(message)

str = b'this is a test'
example = encrypt(str)
print(decrypt(example))

代码审计

以上python程序,是一个简单的加解密程序

原理我们不需要清楚,我们只要使用就可以了

接下来尝试把我们上面拿到的base64代码放进程序里进行解密

所以程序里只留下必要的解密代码即可

# coding:utf-8

from Crypto import Random
from Crypto.Cipher import AES
import sys
import base64

IV = b'QWERTYUIOPASDFGH'

def decrypt(encrypted):
  aes = AES.new(IV, AES.MODE_CBC, IV)
  return aes.decrypt(encrypted)

str = b'19aaFYsQQKr+hVX6hl2smAUQ5a767TsULEUebWSajEo='

flag = base64.b64decode(str)

print(decrypt(flag))

运行结果:


 回到开头拿到的flag.rar文件,使用密码对其进行解压

获得flag:

 


WDCTF{Seclab_CTF_2017}


http://www.kler.cn/a/229239.html

相关文章:

  • 探索 Transformer²:大语言模型自适应的新突破
  • 【Linux】--- 进程的等待与替换
  • 鸿蒙UI开发——键盘弹出避让模式设置
  • Python贪心
  • [Linux]Docker快速上手操作教程
  • 【MySQL】MVCC详解, 图文并茂简单易懂
  • SpringBoot日志插件log4J和slf4J的使用和比较含完整示例
  • Python学习路线 - Python语言基础入门 - 面向对象
  • C# Onnx GroundingDINO 开放世界目标检测
  • FPGA解码MIPI视频:Xilinx Artix7-35T低端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持
  • Vivado用ILA抓波形保存为CSV文件
  • 大数据Zookeeper--案例
  • 《合成孔径雷达成像算法与实现》Figure6.5
  • LeetCode树总结
  • 【开源】基于JAVA+Vue+SpringBoot的陕西非物质文化遗产网站
  • 【第三十五节】idea项目的创建以及setting和Project Structure的设置
  • chisel RegInit/UInt/U
  • elementUI实现selecttree自定义下拉框树形组件支持多选和搜索
  • LINUX设置时间
  • 年底个人总结
  • 【数据分享】1929-2023年全球站点的逐年平均能见度(Shp\Excel\免费获取)
  • 为后端做准备
  • vue+vite项目,动态导入静态资源的几种方式
  • Zabbix报警、进阶操作
  • ❤ React18 环境搭建项目与运行(地址已经放Gitee开源)
  • TS项目实战二:网页计算器