仅记录个人参与解出
[Misc]签到
拆分gif帧:
手读一下然后rot13解码:flag{welcome-every-player}
[Misc]钓鱼邮件识别
你是 Foobar 大学的安全分析师。一位名叫张三的员工报告了一封可疑的邮件,并将其提供给你进行分析。你的任务是仔细检查这封邮件,识别潜在的钓鱼指标,找出表明这是一次钓鱼尝试的线索。
可疑邮件以 EML 文件的形式提供,请查看附件。
本题共有3个flag
Flag1flag{weLcoMeTO}
Flag2flag{phIShhunTinG}
Flag3
得知flag有3部分。
使用在线网站分析得到flag2和flag3,这里spf没有分析出来,换用nslookup分析:flag{N0wY0u_Kn0wH0wt0_ANAlys1sDNS}
[Misc]easyshell
网站被攻击了!你能从流量文件中分析出被偷走了什么数据么?
冰蝎流量,密钥是默认密钥,工具梭一下:
得到一个zip:
继续向下解密得到:
找不到明文,发现CRC32值一致:
尝试明文攻击
解压得到flagflag{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变表base64flag{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}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达.