Windows 10/11下Python 2.7.9与sqlmap零基础安装实战手册

刚接触网络安全的新手往往会在环境配置阶段就遭遇"劝退三连":Python版本冲突、环境变量配置错误、命令行操作报错。本文将用最直白的语言,带你一步步避开这些陷阱,完成从零到一的sqlmap环境搭建。

1. 环境准备:Python 2.7.9的正确打开方式

1.1 选择正确的Python版本

虽然sqlmap已支持Python 3,但大量实战案例表明,Python 2.7.9仍是兼容性最佳的选择。前往Python官网下载时需注意:

  • 直接访问 官方历史版本页面
  • 选择 Windows x86 MSI installer (32位版本兼容性更好)
  • 文件名为 python-2.7.9.msi (约18MB)

注意:切勿从第三方镜像站下载,避免植入恶意代码的风险

1.2 安装路径的黄金法则

双击安装包后,关键配置项如下:

  1. 安装类型 :选择 Install for all users
  2. 目标路径 :保持默认 C:\Python27\
  3. 组件选择
    • 勾选 Add python.exe to Path
    • 勾选 Register Extensions

安装完成后立即验证:

python --version

预期输出应为 Python 2.7.9 ,若报错则说明环境变量未生效。

2. 环境变量配置:90%错误的根源

2.1 手动配置PATH变量

即使安装时勾选了自动添加PATH,仍需手动确认:

  1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
  2. 系统变量 中找到 Path 并编辑
  3. 确保包含以下两条(注意斜杠方向):
    C:\Python27\
    C:\Python27\Scripts\
    

验证方法:

echo %PATH%

应能看到上述路径出现在输出中。

2.2 常见问题排查表

错误现象 可能原因 解决方案
'python'不是内部命令 PATH未生效 重启CMD或系统
版本显示为Python 3.x 多版本冲突 使用 py -2.7 命令
安装后无法识别pip Scripts路径缺失 手动添加Scripts到PATH

3. sqlmap部署:从下载到首测

3.1 安全获取sqlmap

推荐两种官方渠道:

  1. GitHub仓库 (最新版):
    git clone https://github.com/sqlmapproject/sqlmap.git
    
  2. 稳定版压缩包
    • 访问 官方下载页
    • 下载 sqlmap-x.x.zip
    • 解压到无中文路径的目录(如 D:\tools\sqlmap

3.2 目录结构解析

解压后的关键文件:

sqlmap/
├── sqlmap.py        # 主程序
├── sqlmap.conf      # 配置文件
├── tamper/          # WAF绕过脚本
└── extra/           # 扩展功能

3.3 首次运行验证

在sqlmap目录打开CMD,执行:

python sqlmap.py --version

正常输出应显示sqlmap版本号,若报错请检查:

  • Python路径是否正确
  • 是否在sqlmap目录执行
  • 系统防火墙是否拦截

4. 实战入门:第一个注入测试

4.1 本地测试环境搭建

建议使用以下漏洞演示平台(任选其一):

  1. DVWA (Damn Vulnerable Web App)
  2. WebGoat
  3. bWAPP

以DVWA为例的测试命令:

python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/?id=1" --cookie="security=low; PHPSESSID=xxx" --batch

4.2 参数详解

  • -u :指定测试URL
  • --cookie :维持登录状态
  • --batch :自动选择默认选项

4.3 结果解读关键点

典型漏洞报告包含:

  1. 注入类型
    • Boolean-based blind
    • Time-based blind
    • UNION query
  2. 风险等级
    [CRITICAL] SQL injection vulnerability detected
    
  3. 修复建议
    • 使用参数化查询
    • 启用WAF防护

5. 高效使用技巧

5.1 常用命令组合

# 基础检测
python sqlmap.py -u "http://example.com/page?id=1" --risk=3 --level=5

# POST请求检测
python sqlmap.py -r request.txt -p username,password

# 数据提取
python sqlmap.py -u "http://example.com/page?id=1" --dbs --tables -D dbname

5.2 性能优化参数

参数 作用 推荐值
--threads 并发线程数 5-10
--delay 请求间隔(秒) 0.5
--timeout 超时时间(秒) 30
--retries 重试次数 3

5.3 安全注意事项

  1. 法律红线
    • 未经授权测试属违法行为
    • 仅限自有系统或授权环境使用
  2. 防护措施
    # 使用代理隐藏IP
    python sqlmap.py -u "http://example.com" --proxy="http://127.0.0.1:8080"
    
  3. 数据保护
    • 测试前备份数据库
    • 使用 --test-filter 限定测试范围

6. 进阶:绕过WAF实战

6.1 常用tamper脚本

# 混淆空格
python sqlmap.py -u "http://example.com" --tamper=space2comment

# 分块传输
python sqlmap.py -u "http://example.com" --tamper=chunked

# 组合使用
python sqlmap.py -u "http://example.com" --tamper="space2comment,chunked"

6.2 自定义tamper脚本

新建 bypass_waf.py

#!/usr/bin/env python

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.NORMAL

def tamper(payload, **kwargs):
    return payload.replace("UNION", "UNI/**/ON") if payload else payload

使用时:

python sqlmap.py -u "http://example.com" --tamper=bypass_waf

7. 排错指南:常见错误解决方案

7.1 Python相关错误

错误1 ImportError: No module named urllib2 解决方案:

pip install -U urllib3

错误2 SyntaxError: Missing parentheses in call to 'print' 原因:误用Python 3环境 解决方案:

py -2.7 sqlmap.py

7.2 sqlmap运行问题

问题1 [CRITICAL] connection timed out 排查步骤:

  1. 检查目标是否存活
  2. 尝试降低扫描强度:
    python sqlmap.py -u "http://example.com" --level=1 --risk=1
    

问题2 [WARNING] HTTP error 500 detected 可能原因:

  • 触发了WAF防护
  • 目标服务器过载 建议方案:
python sqlmap.py -u "http://example.com" --delay=2 --timeout=15

8. 效率提升:自动化脚本示例

创建 scan.bat 批处理文件:

@echo off
set TARGET=http://example.com/page?id=1
set OUTPUT=result_%date:~0,4%%date:~5,2%%date:~8,2%.txt

python sqlmap.py -u "%TARGET%" --batch --output-dir="%OUTPUT%"

高级版本(带参数传递):

import os
import sys

target = sys.argv[1] if len(sys.argv) > 1 else input("Enter target URL: ")
cmd = f'python sqlmap.py -u "{target}" --batch --output-dir=reports'

if not os.path.exists('reports'):
    os.makedirs('reports')

os.system(cmd)

更多推荐