news 2026/4/4 0:23:09

sql注入流程示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
sql注入流程示例

1,假设你用自己的用户名和密码登录了一个付费网站,网站服务器需要查询一下你是不是VIP用户,服务器通常都是会向数据库进行查询的,因为服务器把用户数据都放在数据库里面了,要向数据库进行增加,删除,修改和查询这些操作,就需要用到SQL这种语言了

2,但问题是如果黑客没有正常输入数据,而是把数据转换成代码,使得服务器向数据库的正向查询变成了不正常的代码执行那么黑客就可以执行自己想要的操作了

3,SQL的语法就很像正常的英语,假设用户输入了用户名和密码后,服务器就会把输入的用户名和密码这两条数据加在WHERE语句里面

4,这看起来是一个正常的操作,但是服务器如果没有过滤用户输入的数据,比方说黑客在用户名最后加上一个单引号就会变成以下:

5,当SQL执行这条语句的时候,会把一对引号里面的视为字符数据,而不是操作符

6,但是这里的引号不成对,因此这条SQL语句是会报错的,如果此时服务器傻傻的把SQL报错的信息直接返回给用户,那么黑客就知道具体是什么原因导致报错了,SQL注入攻击的门就这样被打开了

7,如果我们在单引号后面再加上--事情就不一样了,如果在Mysql里面,系统遇到了这两条横线就会认为后面的内容都是注释,注释是不会被视为代码进行执行的,注释一般是用来给代码进行解释说明的文字,相当于只会执行前面的SQL语句,如果黑客知道用户名,即使不知道密码也可以进行账号登录了

8,那如果黑客连正确的用户名信息都没有,也没关系,因为SQL语句在遇到WHERE关键词的时候会判断条件是真还是假,如果一个条件为真,另外一个条件为假,再用OR(或者)来把这两个条件拼接起来,那么得到的就是真,也就是说黑客只需要再增加一个为真的条件就行了

9,比如1=1,因为1肯定等于1的,所以条件为真,即使用户信息错误,WHERE这里的逻辑判断都是为真,因为这里是OR或者这样的逻辑

10,正因为我们可以注入SQL代码,甚至有些车主会把自己的车牌改成这样子,对交警系统进行了SQL注入,比如车闯红灯,摄像头拍照,放到数据库里面查询这辆车的信息,进行扣分,由于数据库识别到的是DROP DATABASES命令,会将交警系统的数据库进行删除,形成SQL注入

总结:

当web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取修改数据库中的数据,最终到达欺骗服务器执行恶意的SQL命令,从而进一步得到相应的数据信息。

******通过构造一条精巧的语句,来查询到想要得到的信息

SQL注入本质:

把用户输入的数据当成代码来执行了

“数据与代码分离”的原则

关键点:

所有的漏洞都是有条件的!!!

1,用户能够控制输入的内容;比如:如果只能输入数字,那SQL注入不了

2,数据库能够执行用户输入的内容

SQL注入的危害:

盗取网站的敏感信息:用户名,密码,电话,地址......

绕过网站后台认证:万能密码:‘ or 1=1#

admin ‘ or1=1#

注意:只有当SQL注入漏洞存在的时候才能使用

为什么能使用万能密码?

万能密码:select * from users where username=’’‘ or 1=1#and password=’’

因为#代表注释,所以效果变成了这样

select * from users where username=’’‘ or 1=1

SQL注入的分类:

根据反馈结果分类:有回显(显错注入),无回显(盲注)

根据数据类型分类

数字型:输入的参数为整型,如id,年龄,页码等

例:有且仅有0,1,2,3,4,5,6,7,8,9

错误演示:‘1‘这是字符型,因为有单引号

字符型:输入的参数为字符串

数字型与字符型最大的区别:数字型不需要闭合,而字符串型一般需要闭合

SQL注入流程:

1,寻找注入点

*SQL注入

*SQL 和数据库有交互的地方,如果和数据库没交互也不存在SQL注入了

https://so2.4399.com/search/search.php?k=111

总结:当出现?xx=yyy就可能出现SQL注入漏洞

2,判断闭合方式

先判断是数字型还是字符型,数字型不用判断

输入:?id=1abcd

有报错:数字型 无报错:字符型

再判断闭合方式:先尝试单引号,再尝试双引号

?id=1asdf

再看报错:单引号没有报错再加双引号,如果都没有报错大概率没有SQL注入

报错解决:停止更新,替换文件

原因:

正常语句:select * from users where id =$id

当你的id=1时:select * from users where id=1

当你的id=1‘时:select * from users where id=1’’

这时候就会报错,程序不认识,多了一个单引号,程序识别不出来,不知道哪个单引号是系统的

注意:不能用#当注释,因为#在url地址栏相当于锚点

当你的id=1‘ --+时:select * from users where id=1--

?id=1' unlonselect 1,(select table_name from information_schema.tables where table_schema='security'),3 --+

判断数据库版本

注意:mysql数据库5.0版本以下没有information_schema数据库,无法进行手动注入

解释:

information_schema.tables是数据库中保存表信息的系统表。table_schema 字段存放表所属的数据库名(schema)。

where table_schema='security'表明只取属于名为 security 的数据库(或 schema)下的表名。

?id=1' unlonselect 1,(selectgroup_concat(table_name)from information_schema.tables where table_schema='security'),3 --+

?id=1' unlonselect 1,(select group_concat(column_name) from information_schema.columnswhere table_schema='security'andtable_name=users),3 --+

Dvwa靶场:

Pikachu靶场同上

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 21:19:44

【开题答辩全过程】以 基于MyBatis的智慧养老网站为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

作者头像 李华
网站建设 2026/3/14 12:14:17

人工智能应用- 语言理解:07.大语言模型

少样本学习(Few-Shot Learning):GPT 可以通过学习少量示例,推断出任务逻辑并给出正确答案。这种能力也被称为“上下文学习”(In-Context Learning, ICL)大语言模型的少样本学习

作者头像 李华
网站建设 2026/3/31 11:53:43

Linux内核LED子系统概述

Linux内核LED子系统概述 1. LED子系统架构 1.1 概述 Linux内核LED子系统是一个用于管理和控制LED设备的框架,提供了统一的用户空间接口和内核API,支持多种触发模式和硬件平台。该子系统的设计目标是简化LED设备的驱动开发,提供一致的用户体验…

作者头像 李华
网站建设 2026/3/25 14:24:51

图片魔法师PMLite|永久免费图片校正漂白工具

分享一款专注图片校正与漂白的实用工具——图片魔法师PMLite,核心功能直接戳中日常处理需求,关键是作者明确承诺永久免费,那些同类软件收费的功能,在这里都能无套路使用。 导入图片后,右侧会直接显示图片基础信息&…

作者头像 李华
网站建设 2026/3/27 8:58:37

2026最实用AI智能体体系课程

涵盖Web/App自动化、智能编程、工作流搭建与短视频创作,集成Playwright、Cursor、Dify、FFmpeg等前沿工具。 重塑你的研发与创作流程,拥抱AI全栈工作流!关于霍格沃兹测试开发学社霍格沃兹测试开发学社,隶属于 测吧(北京…

作者头像 李华