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}

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0DayHP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值