高校网络安全管理运维赛

  1. [Misc]签到
  2. [Misc]钓鱼邮件识别
  3. [Misc]easyshell
  4. [Misc]SecretDB
  5. [Misc]Gateway
  6. [Misc]zip
  7. [Reverse]easyre
  8. [Reverse]babyre

仅记录个人参与解出

[Misc]签到

拆分gif帧:

手读一下然后rot13解码:

flag{welcome-every-player}

[Misc]钓鱼邮件识别

你是 Foobar 大学的安全分析师。一位名叫张三的员工报告了一封可疑的邮件,并将其提供给你进行分析。你的任务是仔细检查这封邮件,识别潜在的钓鱼指标,找出表明这是一次钓鱼尝试的线索。
可疑邮件以 EML 文件的形式提供,请查看附件。
本题共有3个flag

Flag1


flag{weLcoMeTO}
Flag2

flag{phIShhunTinG}
Flag3

得知flag有3部分。
使用在线网站分析得到flag2和flag3,这里spf没有分析出来,换用nslookup分析:



flag{N0wY0u_Kn0wH0wt0_ANAlys1sDNS}

[Misc]easyshell

网站被攻击了!你能从流量文件中分析出被偷走了什么数据么?

冰蝎流量,密钥是默认密钥,工具梭一下:

得到一个zip:

继续向下解密得到:


找不到明文,发现CRC32值一致:

尝试明文攻击

解压得到flag
flag{70854278-ea0c-462e-bc18-468c7a04a505}

[Misc]SecretDB

Find secret from DB.


有大量的01 0F,四个字节一组,则第三字节为顺序,第四字节为数值,拼接得到
flag{f6291bf0-923c-4ba6-?2d7-ffabba4e8f0b}
其中?没有对应数据,uuid格式,0-f尝试
flag{f6291bf0-923c-4ba6-82d7-ffabba4e8f0b}

[Misc]Gateway

小张买了一个新的网关,并暴露到了外网,由于默认口令的原因,黑客很快登录了系统并重置了密码,这个黑客甚至在他的电脑上留下了这个网站的部分代码,你能帮他找到密码并解密成功吗?

翻文件看


对应位置替换为括号即可
flag{ad1985868133e8cf1828cb84adbe5a5b}

[Misc]zip

Alice 把 flag 用你的 token 压缩并加密成了一个 zip 压缩包,并且希望你提供 flag 来解压这个压缩包。
如果解压成功, Alice 就会告诉你 flag 的内容,但好像 Alice 的代码实现有些问题?

代码限制密码长度64

又因为开头一定是flag{,但是password中肯定没有这部分,选择使用5个del删除,exp:

from pwn import *

context(arch='amd64',os='linux',log_level = 'debug')

p = remote("prob03.contest.pku.edu.cn", 10003)

p.sendlineafter("Please input your token: ", '240:MEYCIQDaJ2TKXBAaSUKBhZxmx8uDg5Y2ighJypzmN1aIMUthqgIhAOmi1UhwQEzCwtFsnQP-kosrbaFA9Pd5T9MYKoGo6YMb')
p.sendlineafter("your token:", '240:MEYCIQDaJ2TKXBAaSUKBhZxmx8uDg5Y2ighJypzmN1aIMUthqgIhAOmi1Uhw')
p.sendlineafter("your flag:", "flag{" + 5 * chr(127) + '240:MEYCIQDaJ2TKXBAaSUKBhZxmx8uDg5Y2ighJypzmN1aIMUthqgIhAOmi1Uhw')

p.interactive()


flag{n3v3R-90Nn4-91V3-y0u-uP}

[Reverse]easyre

flag被奇怪编码过了,试试看能否还原出原文?

密文

shift+F12变表base64


flag{B4se64_1s_s0_e4sy}

[Reverse]babyre

真正的程序似乎被藏起来了,你能找到flag吗?

UPX 脱壳
main函数

发现有四个函数分别决定了四个数的值,用z3直接解,这里v4爆了很多次

from z3 import *

v1 = 0x36145344 + 0xADB1D018  
print(v1)  

  
v2 = BitVec('v2',32)  
s = Solver()  
s.add((v2 | 0x8E03BEC3) - 3 * (v2 & 0x71FC413C) + v2 == 0x902C7FF8 )  
s.check()  
print(s.model())  
  
v3 = BitVec('v3',32)  
x = Solver()  
x.add(4 * ((~v3 & 0xA8453437) + 2 * ~(~v3 | 0xA8453437))+ -3 * (~v3 | 0xA8453437)+ 3 * ~(v3 | 0xA8453437)- (-10 * (v3 & 0xA8453437) + (v3 ^ 0xA8453437)) == 551387557)  
x.check()  
print(x.model())  
  
v4 = BitVec('v4',32)  
z = Solver()  
z.add(11 * ~(v4 ^ 0xE33B67BD)  
     + 4 * ~(~v4 | 0xE33B67BD)  
     - (6 * (v4 & 0xE33B67BD)  
      + 12 * ~(v4 | 0xE33B67BD))  
     + 3 * (v4 & 0xD2C7FC0C)  
     + -5 * v4  
     - 2 * ~(v4 | 0xD2C7FC0C)  
     + ~(v4 | 0x2D3803F3)  
     + 4 * (v4 & 0x2D3803F3)  
     - -2 * (v4 | 0x2D3803F3) == 0xCE1066DC)  
z.add(v4 < 0x10000000)  
z.add(v4 != 2944614531)  
z.add(v4 != 4018356355)  
z.add(v4 != 2214805635)  
z.add(v4 != 4093853827)  
z.add(v4 != 3020112003)  
z.add(v4 != 2943303811)  
z.check()  
print(z.model())

flag{e3c6235c-05d9434d-04b1edf3-04034083}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达.