Sql注入---基础

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

一.Sql注入概述

        攻击者通过构造恶意的SQL查询语句,将其注入到应用程序的数据库查询中,以执行未经授权的操作或者获取敏感信息。

        假设如下场景,当你想要知道对方实际年龄时碍于某些原因无法直接询问对方实际年龄时,可以通过询问对方的学历,年级等信息倒推出对方的实际年龄,Sql注入原理类似。 

二.Sql注入原理 

        用户通过前端页面输入数据时不受限制(如:输入网址,账户/密码等);后端服务器程序会将前端输入的内容拼接成SQL语句并在数据库中执行;数据库会将SQL语句执行结果返回给后端程序,后端服务器再根据数据库返回结果返回给前端页面一个回显信息(如:密码错误,404等)

        若此时黑客在前端页面输入一些有目的的SQL语句,可能会导致后端程序拼接出一些危险的SQL语句(如:查询用户密码,删库等)在数据库中执行。

举个例子:

常见前端页面输入如下:

 后端拼接SQL语句如下:

 由于输入的用户密码不正确,数据库无法执行,后端会回显账号密码不正确

黑客前端页面输入:

后端拼接SQL语句:、

 上述恶意SQL语句能够查出数据,从而能够绕开登录限制成功登录。

三.Sql注入逆向分析

Sql注入分类

按照查询字段:

  • 字符型:当注入的参数为字符串时,称为字符型。
  • 数字型:当输入的参数为整型时,可以认为是数字型注入。
  • 判断标准:数字类型的sql语句可被运算后执行,而字符型不可、例如。id=1的sql查询结果是aa,id=2的查询结果是bb,设sql注入:id=2-1.若查询结果是aa即为数字型,反之是字符型       

按照注入方法:

  • Union注入,报错注入,布尔注入,时间注入

Sql注入点

        SQL注入点就像是一个漏洞,可以让坏人通过输入一些特殊的东西,像是代码或者指令,让数据库做一些不该做的事情。

        举个例子吧,假设你在一个网站上登录账户,输入用户名和密码来登录。但是如果这个网站没有做好安全措施,坏人可能会在登录框里输入一些奇怪的代码,这样就可以让数据库做一些坏事,比如获取其他用户的密码,甚至是删除一些重要的数据。

Sql 语句闭合方式判断

Sql 语句闭合方式分类:

  • 单引号:‘ /  ’)
  • 双引号:" " / " ")

我们可以通过在URL输入栏中使用布尔

举个例子:

#后端程序根据URL拼接出SQL语句在数据库中执行,报错原因如下
''2'' LIMIT 0,1' at line 1报错原因分析:
URL中的2'使原先可被执行的SQL语句中两两对称四个单引号的变为5单个引号从而导致SQL语句执行失败,由此可到推出后端程序拼接出的SQL语句闭合方式是单引号闭合

 闭合的作用:

手工提交闭合符号,结束前一段查询语句,后面即可加入其它语句,查询需要的参数。不需要的语句可以使用"--+"注释掉

#使用--+注释多余语句:2'--+
报错SQL语句:''2'' LIMIT 0,1' at line 
使用--+后SQL语句变为:''2'' 即--+会将LIMIT 0,1'注释掉从而是恶意的SQL语句成功执行

Union联合注入

 sql注入中可以利用union查询需要前后列数一致的原则

#union联合查询语法
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;

Union联合注入案例: 

#SQL注入语句:
http://192.168.100.10/sql/Less-1/index.php?id=1' union select database()--+
#报错语句:
The used SELECT statements have a different number of columns
#报错语句分析:
由http://192.168.100.10/sql/Less-1/index.php?id=1'拼接出的SQL语句查询出的列数
和SQL注入union联合注入语句:union select database()--+ 查询出的列出不一致SQL语句解析:select database():查询数据库的名字 -->该语句仅查询一列数据即数据库名字

 如何判断正常拼接出的SQL语句查询出的列数?

可以使用group by /order by 语句

#group by 语法:
SELECT grade, COUNT(*) as num_of_students
FROM students
GROUP BY grade;#这个查询将会返回每个成绩分数段以及在该分数段内的学生人数。

​​​​​​​

#成功执行的sql注入语句:
http://192.168.100.10/sql/Less-1/index.php?id=1' group by 1--+
http://192.168.100.10/sql/Less-1/index.php?id=1' group by 2--+
http://192.168.100.10/sql/Less-1/index.php?id=1' group by 3--+
#未成功执行的SQL语句:
http://192.168.100.10/sql/Less-1/index.php?id=1' group by 4--+逆向分析结果:group by 1--+:正常拼接SQL语句查询出的数据含有"1"这个列名group by 2--+:正常拼接SQL语句查询出的数据含有"2"这个列名group by 3--+:正常拼接SQL语句查询出的数据含有"3"这个列名group by 4--+:正常拼接SQL语句查询出的数据不含"4"这个列名综上判断:正常拼接出的SQL语句共查出3列数据

总结

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

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

相关文章

【c++】简单的日期计算器

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好啊,在我们学习了默认成员函数后,我们本节内容来完成知识的实践,来实现一个简易的日期计算器 目录 头文件声明函数函数的实现1.全缺省默认构…

每日一博 - 关于日志记录的最佳实践

文章目录 概述选择合适的日志等级打印函数的入参、出参打印日志对象要做判空处理,避免阻断流程推荐使用 Slf4j不用e.printStackTrace()打印日志低级别的日志输出,必须进行日志级别开关判断不打印重复日志打印全部的异常信息,方便定位问题核心…

cocos2.x => node 属性修改

简介 与节点属性相关的几个核心变量_trs、_matrix、_worldMatrix、_localMatDirty、_worldMatDirty。 _trs:存储节点的position、rotation、scale _matrix:存储节点的缩放、位移、旋转三者合一的变化矩陈(仿射矩陈) _worldMat…

python多方式操作elasticsearch介绍

python多方式操作elasticsearch介绍 1. requests模块操作ES ​ requests 是一个 Python HTTP 库,它简化了发送 HTTP 请求和处理响应的过程。通过 requests 模块,开发人员可以轻松地与 Web 服务进行通信,包括获取网页内容、执行 API 请求等。…

Qt for WebAssembly 环境搭建 - Windows新手入门

Qt for WebAssembly 环境搭建 - Windows新手入门 一、所需工具软件1、安装Python2、安装Git2.1 注册Github账号2.2 下载安装Git2.2.1配置Git:2.2.2 配置Git环境2.2.3解决gitgithub.com: Permission denied (publickey) 3 安装em编译器 二、Qt配置编译器三、参考链接…

怎么让ChatGPT批量写作原创文章

随着人工智能技术的不断发展,自然语言处理模型在文本生成领域的应用也日益广泛。ChatGPT作为其中的佼佼者之一,凭借其强大的文本生成能力和智能对话特性,为用户提供了一种高效、便捷的批量产出内容的解决方案。以下将就ChatGPT批量写作内容进…

厦门攸信技术亮相新技术研讨会,展现物流自动化解决方案新高度!

今日,厦门攸信信息技术有限公司受邀参加了一场备受行业关注的电子制造高端盛会——一步步新技术研讨会,凭借卓越的智能制造与物流自动化技术在会议中大放异彩。作为一家引领行业发展的企业,厦门攸信技术不仅展示了其深厚的技术底蕴&#xff0…

算法系列--动态规划--背包问题(4)--完全背包拓展题目

💕"这种低水平质量的攻击根本就不值得我躲!"💕 作者:Lvzi 文章主要内容:算法系列–动态规划–背包问题(4)–完全背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(4)--完全背包拓展题目…

《web应用技术》第一次课后练习

上机任务(利用好chatgpt,文心一言等工具。): 1、下载软件,并安装。相关安装文件已上传至群文件。 JDK,TOMCAT,IDEA 2、学会用记事本编写jsp文件,并放进tomcat的相关目录下,运行。 …

使用Windows自带服务(BitLocker)加密U盘

第一步:启用 BitLocker 服务 1.1快捷键:WinR 调出运行框,输入services.msc 1.2找到服务列表中的BitLocker Drive Encryption Service,启动此项 第二步:加密U盘 把你的U盘插入电脑,打开“我的电脑”&#…

EFCore的空迁移(EFCore操作已存在的数据库表,不影响其中的数据)

背景:EFCore默认的会自动创建数据表,但是有时又是DBFirst,数据库写好了要用现成的表。这个时候就需要进行一些特殊的操作了 1、写出跟要对接数据库的实体类 比如我的表是这样创建的 create table mail_test (user_id bigint auto_increment …

OSCP靶场--Twiggy

OSCP靶场–Twiggy 考点(CVE-2020-11651[RCE]) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.216.62 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-30 06:43 EDT Nmap scan report for 192.168.216.62 Host i…

基础拓扑排序

前言 拓扑排序是一种针对“有向无环图”的算法,用于解决一些有“依赖关系”的问题。 拓扑排序保证了当处理到某个电时,其所有的如电都已经处理过了。 例如右边这个图,拓扑序可以保证处理点2之前,点4和点6都处理过了、处理点3之…

IDEA的使用(概念,安装,配置,)以及什么是字符集,模版

目录 Intellij IDEA IDE的概念 IntelliJ IDEA的安装 IntelliJ IDEA的使用 基本配置 JDK配置 创建Module 基本用法 字体配置 主题配置 字符集 设置IDEA默认字符集 注释模板 字符集 字符集简介 常见字符集 Intellij IDEA 我们不可能一直使用记事本之类变成&#…

何恺明重提十年之争——模型表现好是源于能力提升还是捕获数据集偏置?

想象一下,如果把世界上所有的图片都找来,给它们放到一块巨大的空地上,其中内容相似的图片放得近一些,内容不相似的图片放得远一些(类比向量嵌入)。然后,我随机地向这片空地撒一把豆子&#xff0…

【C#】知识点速通

前言: 笔者是跟着哔站课程(Trigger)学习unity才去学习的C#,并且C语言功底尚存,所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解,然后在后期unity学习过程中加以深度学习。如需完善的C#知识…

码支付个人支付宝永不掉线使用教程

​支付宝免CK添加操作稍微繁琐点,请耐心观看 此通道必须关闭你的余额宝自动转入功能,否则可能造成不跳转 支付宝添加的所有通道均支持H5免输入收款 第一步:打开支付宝开发平台,然后用你的支付宝注册登陆:https://op…

算法学习——LeetCode力扣动态规划篇5

算法学习——LeetCode力扣动态规划篇5 198. 打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统…

python学习16:python中的布尔类型和条件语句的学习

python中的布尔类型和条件语句的学习 1.布尔(bool)类型的定义: 布尔类型的字面量:True表示真(是、肯定) False表示假(否、否定) True本质上是一个数字记作1,False记作0 …

遥感数字图像处理的学习笔记

相关链接: 遥感数字图像处理实验教程(韦玉春)--部分实验问题回答 目录 1.什么是图像,什么是数字图像? 2.什么是遥感数字图像?模拟图像(照片)与遥感数字图像有什么区别? 3.什么是遥感数字图像…