赛后跟着官方wp复现的。

Web

baby_upload

解题思路:

解法1:

可以再url后面乱加点东西,返回404页面可以看到阿帕奇版本号————Apache/2.4.10,网上查询到该版本存在道CVE-2017-15715这个解析漏洞。

CVE-2017-15715:
**Apache換行解析漏洞(CVE-2017-15715)是一种解析漏洞,可以影响httpd 2.4.0至2.4.29版本中的PHP解析。攻击者可以通过在上传的文件名中添加特定的换行符,绕过服务器的安全策略,使其被解析成PHP文件而不是普通文件。此漏洞会影响具有以下条件的服务器:

未正确配置的服务器
未对文件名进行适当验证的服务器
使用正则表达式并启用Multiline属性的服务器

攻击者可以将1.php\x0A作为文件名上传到服务器上,这个文件名看起来像是一个普通的非PHP文件,但是由于其中的特定字符,服务器会将其解析为PHP文件。此外,在上传文件时添加换行符也可以使文件被成功解析,从而绕过系统的黑名单检测。(x0A 是一个十六进制的转义字符,表示换行符)。

Hex修改一下在文件名1.php后加上0A换行就行了。

根据写入的一句话木马用蚁剑连接一下,flag就在根目录下。

解法2:

白名单后缀绕过,后端代码写的有问题,只对第一个后缀名进行了黑名单检测所以修改文件名为1.jpg.php(jpg改为png也行),然后也是蚁剑连接一下就好了。flag:
SYC{3e48f6ad-2de5-4254-b249-978f43d35e0f}

ez_http

解题思路:

一道简单的签到题,但是考http请求头还是挺全面的,不知道为啥用hackerbar没整出来,用bp发包才成功get到一个新知识,除了X-Forwarded-For,X-Real-Ip也可以用于伪造ip

funnySQL

解题思路:

黑名单如下:
if(preg_match(‘/and|or| |\n|—|sleep|=|ascii/i’,$str)){
die(‘不准用!’);

然后题目无回显无报错,要打的注入方式就是为时间盲注了,然后想想怎么绕过,or被ban了,意味着information和performance这俩库都查不了了,所以我们只能通过mysql.innodb_table_stats 来查到表名
sleep被ban了,用benchmark绕就行了,=号可以用like,regexp等来绕,也可以用>或者<号来绕空格被ban了可以用/**/或者是()来绕。

exp如下:

1
2
3
4
5





Misc

ez_jpg

解题思路:

下载附件得到flag.txt,内容明显是base64编码,解码可以发现是文件数据流,文件尾明显是FFD8FFE0的逆序,是jpg图片逆序,利用脚本还原数据流。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 数据流逆序还原
# 定义输入输出文件名
input_file = 'C:/Users/19766/Desktop/flag.jpg'
output_file = 'reversed_flag.jpg'

# 读取文件内容,并指定编码方式(这里假设是UTF-8)
with open(input_file, 'r', encoding='utf-8') as file:
data = file.read()

# 逆序数据
reversed_data = data[::-1]

# 将逆序后的数据写入新文件,并指定同样的编码方式
with open(output_file, 'w', encoding='utf-8') as file:
file.write(reversed_data)

print(f"已成功将 {input_file} 文件中的数据逆序并保存到 {output_file}")

还原后出来这么个东西,明显宽高不对,拖到010看看,损害的宽高是0280 0210,我这里已经修复修改成0280 0280差不多,得到flag。