顾名思义,简单的SQL注入!
先浅了解一下注入:SQL 注入(SQL Injection) 是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。 主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。 简而言之,SQL 注入就是在用户输入的字符串中加入 SQL 语句,如果在设计不良的程序中忽略了检查,那么这些注入进去的 SQL 语句就会被数据库服务器误认为是正常的 SQL 语句而运行,攻击者就可以执行计划外的命令或访问未被授权的数据。
想详细了解的话,戳一下链接吧:https://www.php.cn/sql/487013.html(针不戳呀针不戳)
随便输输常用密码啦,就会显示错误:
flag{a0b2c066-8ec8-4814-9573-9dc3787db556}
万能密码原理:SQL语句sql="select * from user where username='"&username&"'and password='"& password&'",当我们的密码填写'or'1'='1提交的时候,此时语句中的password等于'or'1'='1,那么,这条SQL语句就变成了:sql="select * from user where username='"&username&"'and password= ''or'1'='1',然而,1=1是恒等条件,自然也就通过了程序的验证。
方法:首先我们需要在密码的最前面有一个单引号,来闭合SQL语句中的单引号,然后构造一个or,也就是或者,后面加一个恒等条件即可最简单的就是1=1,同样为了使SQL语句不出错,是来闭合程序中的SQL语句的后面的单引号的,如果我们在后面再加上一个单引号的话就会出错。简而言之:由于网站后台在进行数据库查询的时候没有对单引号进行过滤,当输入用户名【admin】和万能密码【2' or'1】时,执行的SQL语句为【Select user_id,user_type,email From users Where user_id=' admin' And password='2'or'1'].同时,由于SQL语句中逻辑运算符具有优先级,【=】优先于【and】,【and】优先于【or】,且适用传递性。因此,此SQL语句在后台解析时,分成两句【Select user_id,user_type,email From users Where user_id='admin' And password = '2']和【1'】,两句bool值进行逻辑or运算,恒为TRUE。SQL语句的查询结果为TRUE,就意味着认证成
功,也可以登录到系统中。(是不是很简而言之)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效