声明!
学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
本文来自这位博主原创更改喜欢的可以关注一下 One_Blanks-CSDN博客
通过百度网盘分享的文件:burp炮台
链接:https://pan.baidu.com/s/1U85J-FOICIyUuwI-J_BM7w?pwd=f3ap
目录
一、kali安装zmap
二、Burp插件使用
三、验证
四、总结
一、kali安装zmap
1.更新系统
sudo apt update
下载zmap,因为我提前装过所以这里可能回显的不太一样
sudo apt install zmap 安装zmap
zmap --version 查看是否安装好
mkdir zmap 创建一个zmap文件夹
2.全网爬取
kali权限不支持多端口一块扫 需要root权限,这里建议在root权限下安装,可用多端口一起扫
sudo zmap -p 80 -o raw_ips.txt
sudo 不加的话可能会扫描报错,因为不是root权限
-p 跟着你要爬取的端口号
-o 把爬取的内容放到这个文件中,也就是文件名
Proxy.py这段代码是把raw_ips.txt文件中扫出来的ip和端口号之间的','转换成':' 如111.123.1.1,80-111.123.1.1:80,替换完 生成一个新的ip.txt文件,还会测试raw_ips.txt中ip是否可用,把可用的ip写入到一个新的InProxyPool.txt文件中。
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import threading# 指定输入和输出文件路径
raw_input_file = 'raw_ips.txt' # 原始包含逗号的IP文件
processed_output_file = 'ip.txt' # 替换逗号后的IP文件
available_proxy_file_path = 'InProxyPool.txt' # 可用代理输出文件# 多个验证URL,包含国内和国外常见网站,用于更严格地验证代理IP是否可用
test_urls = ['http://www.baidu.com','http://www.jd.com/','http://www.taobao.com/'
]# 线程锁
lock = threading.Lock()
# 标记是否是第一次写入可用代理文件,初始化为True表示第一次
first_write = Truedef replace_comma_with_colon(input_file, output_file):"""替换文件中逗号为冒号,并保存到新文件。"""with open(input_file, 'r') as file:lines = file.readlines()# 替换逗号为冒号modified_lines = [line.replace(',', ':').strip() for line in lines]# 写入新的文件,'w'模式会自动清空原有内容再写入with open(output_file, 'w') as file:for line in modified_lines:file.write(line + '\n')print(f"IP格式处理完成,结果已保存到 {output_file}")def test_proxy(proxy):"""测试单个代理IP是否可用,通过多个URL验证,只有全部验证通过才认定可用,并实时写入文件。"""global first_writeproxy = proxy.strip() # 移除行尾的换行符if not proxy: # 跳过空行return None# 设置代理proxies_dict = {'http': f'http://{proxy}','https': f'https://{proxy}'}is_available = Truefor url in test_urls:try:# 发送请求,设置超时时间为5秒response = requests.get(url, proxies=proxies_dict, timeout=5)if response.status_code!= 200:is_available = Falsebreakexcept requests.RequestException as e:is_available = Falsebreakif is_available:print(f'代理IP {proxy} 可用')with lock:# 根据是否第一次写入来决定文件打开模式mode = 'w' if first_write else 'a'with open(available_proxy_file_path, mode) as file:file.write(f'{proxy}\n')if first_write:first_write = False # 第一次写入后标记设为Falsereturn proxyelse:print(f'代理IP {proxy} 不可用')return Nonedef main():# 第一步:处理IP文件replace_comma_with_colon(raw_input_file, processed_output_file)# 第二步:读取替换后的IP文件,验证代理IPwith open(processed_output_file, 'r') as file:proxies = file.readlines()# 使用ThreadPoolExecutor并发执行with ThreadPoolExecutor(max_workers=20) as executor:future_to_proxy = {executor.submit(test_proxy, proxy): proxy for proxy in proxies}for future in as_completed(future_to_proxy):proxy = future_to_proxy[future]try:future.result() # 触发验证逻辑except Exception as e:print(f'代理IP {proxy} 验证过程中出现错误: {e}')print(f"\n代理验证完成,可用代理IP已写入文件: {available_proxy_file_path}")if __name__ == "__main__":main()
FinalProxy.py 这段代码是会自动读取 InProxyPool.txt文件 去访问目标的url地址,查看ip是否可用,可用生成新文件FProxies.txt,这个文件就是我们最后使用的文件
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import threading# 最小响应包长度
MIN_LENGTH = 100
# 最大线程数
MAX_WORKERS = 100
# 输出文件路径
OUTPUT_FILE_PATH = 'FProxies.txt'
# 输入文件路径
input_file_path = 'InProxyPool.txt'def check_proxy(proxy):"""验证代理网址"""test_url = "https://sqli-labs.bachang.org/Less-1/?id=1" #目标urlproxies = {"http": f"http://{proxy}", "https": f"http://{proxy}"}try:response = requests.get(test_url, proxies=proxies, timeout=2)if response.status_code == 200 and len(response.content) >= MIN_LENGTH:return proxy # 返回可用代理except Exception:passreturn None # 无效代理def validate_proxy(proxy, lock):"""验证单个代理并写入文件"""valid_proxy = check_proxy(proxy)if valid_proxy:with lock:with open(OUTPUT_FILE_PATH, 'a') as outfile:outfile.write(f"{valid_proxy}\n")print(f"有效代理: {valid_proxy}")else:print(f"无效代理: {proxy}")def validate_proxies_from_file(input_file_path):"""从文件中读取代理并验证其有效性,同时将有效代理输出到另一个文件"""lock = threading.Lock()with open(input_file_path, 'r') as infile:proxies = [line.strip() for line in infile]with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:futures = [executor.submit(validate_proxy, proxy, lock) for proxy in proxies]for future in as_completed(futures):future.result() # 等待所有任务完成validate_proxies_from_file(input_file_path)
二、Burp插件使用
需要用到的文件我放在了文章开头
三、验证
1.我们随便抓个包然后放入Intruder(爆破模块)
四、总结