第二届红帽杯
-
Not Only Wireshark:
用wireshark打开,筛选http,看到一些可疑的字符
用python跑一下把这些可疑字符提取出来
import re f = open("Not Only Wireshark.pcapng", "rb").read() a = re.findall(b"/sqli/example2\.php\?name=(...)", f) f1 = open("test.txt", "a+") for i in a: j = i.decode() strs = "".join(j) f1.write(strs) f1.close()
提取出来的字符
在 1234 后面补个5,加上后面几位就是504B0304,这是zip的文件头
生成zip文件
a = "504B03040A0001080000739C8C4B7B36E495200000001400000004000000666C616781CD460EB62015168D9E64B06FC1712365FDE5F987916DD8A52416E83FDE98FB504B01023F000A0001080000739C8C4B7B36E4952000000014000000040024000000000000002000000000000000666C61670A00200000000000010018000DB39B543D73D301A1ED91543D73D301F99066543D73D301504B0506000000000100010056000000420000000000" a_b = bytes.fromhex(a) f = open('test.zip','wb') f.write(a_b) f.close()
生成完成后打开
看到一个flag文件,但是要密码
解压密码在流量包中
解压密码是 key= 之后的内容
输入解压密码,得到flag
-
simple upload:
随便输个账号密码
burp 抓包
发现一个可以的地方 admin=0,把 0 改成 1,发包
在返回包里看到一个链接,访问一下
是一个上传点
上传个php脚本上去
burp 改包
admin=0 把 0 给成 1,shell.jpg 改成 shell.php
主要是检测 Content-Type 这个,要是image/jpeg 或 png 的
返回包中得到地址,访问一下
直接是图片了,看一下是啥容器
Tomcat,得上传 jsp 脚本上去
在根目录看到一个 flag 文件
查看内容,得到 flag
biubiubiu:
打开链接,是一个登陆页
在地址处看到,index.php?page=login.php,可能存在文件包含
试着读一下/etc/passwd,index.php?page=../../../../../etc/passwd
成功读取了/etc/passwd
接下来读取 nginx 的配置文件,index.php?page=../../../../../etc/nginx/nginx.conf
读取错误日志文件的内容,index.php?page=../../../../../var/log/nginx/access.log 和 index.php?page=../../../../..//var/log/nginx/error.log,发现访问的链接地址都会被记录
访问x.php<?php phpinfo();?>
phpinfo 被成功执行
写一句话
-
听说你们喜欢手工爆破:
题目提示:flag{}内英文字母为大写形式
下载下来是一个 iso 文件,看一下里面的东西
有个压缩文件,还有很多的 txt 文本文件
全部提取出来
压缩文件需要密码,这些 txt 里都是 base64 加密的 Th3r3 1s n0 f1ag,不是解压密码
把这些 txt 的文件名提取出来
import os a = os.listdir(r"C:\Users\hp\Desktop\OS_038c9291c8039792d1aad140f6664671") f = open("password.txt", "w") for filename in a: index = filename.rfind(".") name = filename[:index] if "情系海边之城" not in name: f.write(name + "\n") f.close()
提取结果
把这些用作字典用 ARCHPR 4.53 爆破一下
爆出了密码
打开 doc 文件,需要密码才能打开
用工具 Advanced Office Password Recovery 爆破一下
得到密码 5693,打开文档
这里有一串字符
百度一下情系海边之城
情系海边之城又叫海边曼切斯特,联想到曼彻斯特编码
n = 0x123654AAA678876303555111AAA77611A321 flag = '' bs = '0' + bin(n)[2:] r = '' def conv(s): return hex(int(s,2))[2:] for i in range(0, len(bs), 2): if bs[i:i+2] == '01': r += '0' else: r += '1' for i in range(0, len(r), 8): tmp = r[i:i+8][::-1] flag += conv(tmp[:4]) flag += conv(tmp[4:]) print("flag" + "{" + flag.upper() + "}")
得到 flag