btslab全攻略——注入之sql注入认证
2023-09-11 14:17:06 时间
btslab全攻略——注入之sql注入认证
认证
打开是一个login界面,第一想到的便是万能密码,所以测试
admin
'or'1'='1
轻而易举登录成功了,当然不能由此沾沾自喜,浅尝辄止,我们知其然也必要知其所以然。
首先我选择的是密码框作为注入点,注意到我用了单引号,不用说你们肯定明白了这里是字符注入(为什么?因为前篇 教程中的get提交的参数id是一篇文章的索引,这个索引直接用数值型变量就可表达,但是这里的密码框需要的是一串字 符,所以肯定只能是字符型注入)。
那为什么我单引号要放在or前面,第一个1的两边,和第二个1的前面呢,因为我猜想后台的sql语句判断密码的时候类似 这样
select * from users where username='admin' and password='$password'
如果我提交'or'1'='1,那么第一个单引号将闭合原sql语句的引号,第二三个单引号是代表1这个字符,最后一个1字符为
什么只有前面有引号?因为原sql语句本身后面就有一个引号,完整构造出来就行
select * from users where username='admin' and password='' or '1'='1'
这里由前向后结合,所以可以这样看
select * from users where (username='admin' and password='') or ('1'='1')
当然第一个括号里条件不会成立,因为admin账号的密码不为空,但是第二个成立了,'1'当然等于'1',所以整个sql语句
成立,登录便成功 由此我们还可以构造很多其他语句达到同样的效果,比如
admin 'or 1#
admin 'or 1=1#
admin 'or 1-- -
这几个个原理差不多(补充一下,#和-- -(中间有个空格)在mysql中是注释,会注释掉后面所有内容),因为有了注 释,所以sql语句#或-- -后面的内容舍弃,最终执行的语句便是
可能有人想问账号框可以注入吗?当然可以,而且更容易 账号只需要填admin'#或者admin'-- -,密码为空,便能直接登录
select * from users where username='admin' and password=''or 1 select * from users where username='admin' and password=''or 1=1
select * from users where username='admin'
相关文章
- 结合jquery的前后端加密解密 适用于WebApi的SQL注入过滤器 Web.config中customErrors异常信息配置 ife2018 零基础学院 day 4 ife2018 零基础学院 day 3 ife 零基础学院 day 2 ife 零基础学院 day 1 - 我为什么想学前端
- web安全day49:SQL注入原理、危害、分类,动手写MYSQL最基本操作命令
- 渗透测试-适合入门的SQL手工注入总结
- 深度注入:
- 进程注入后门工具Cymothoa
- PHP代码审计----3、代码注入
- SQL注入篇——利用SqlServer执行系统命令连接远程桌面
- 《WEB安全漏洞100讲》(第1讲)SQL注入漏洞
- 依赖注入及AOP简述(八)——混合请求模式 .
- [iOS Reverse]logify日志追踪,锁定注入口-控制台查看
- Spring 注入简介
- 依赖注入(DI)和控制反转(IOC)的理解,写的太好了。
- (CVE-2020-9483)ApacheSkyWalking SQL注入 漏洞复现
- (七)理解angular中的module和injector,即依赖注入