绕过登录的万能密码 SQL 注入

Portswigger练兵场之SQL注入

SQL 注入-绕过登录的万能密码

Lab: SQL injection vulnerability allowing login bypass

实验前置必要知识点

正常一个没有防护的应用程序,允许用户使用用户名和密码登录。

如果用户提交用户名和密码,应用程序将通过执行以下 SQL 查询来检查凭据:

SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'

如果查询返回用户的详细信息,则登录成功。否则,将被拒绝。

如果遇到防护较低的应用程序,在这个时候利用注释的方法,让查询帐号的结果返回真,忽略掉密码部分,即万能密码登录系统。

SELECT * FROM users WHERE username = 'administrator'--' AND password = ''

此查询返回用户名为administrator的用户,并成功将攻击者登录到该用户。

实验要求

本实验在登录函数中包含一个 SQL注入漏洞。

若要解决实验室问题,请执行以administrator用户身份登录到应用程序的 SQL 注入攻击。

渗透开始

  • 访问对应靶场界面

https://portswigger.net/web-security/sql-injection/lab-login-bypass
  • 启动靶场

1. 站点分析

这是购物类型的网站


具有查看商品以及登录的功能点

2. 寻找可疑功能点(查看Burp历史记录进行分析)

从总体来看,根据提示需要关注的是登录功能点


因此,分析突破口在这

3. 功能点测试

将对应的日志信息发送到重放模块

如果登录处存在无防护的SQL注入的话,首先我们尝试让语句报错,添加'

很直观的发现500报错了

添加2个'发现变回了200说明是单引号闭合的SQL语句

推测应用程序会将输入的账号密码通过执行以下SQL查询来检查凭据:

SELECT * FROM users WHERE username = 'aaa' AND password = 'bbb'

可以确定的是账号和密码处是可控的

SELECT * FROM users WHERE username = '{账号}' AND password = '{密码}'

根据提示,需要登录的账号是administrator,因此先修改username参数

SELECT * FROM users WHERE username = 'administrator' AND password = '{密码}'

如果查询的时候让账号为真并且忽略掉后面的内容,根据SQL的逻辑,账号存在为真会返回True,而应用程序根据返回为真的情况允许用户登录

SELECT * FROM users WHERE username = 'administrator' -- q' AND password = '{密码}'

利用注释的方法忽略掉密码,尝试在username参数后administrator拼接' --

因为是在POST传参中,不需要像GET一样进行URL编码操作

csrf=lsKpaUmIveO1R6uh8ap9d1OFNOGu14Vv&username=administrator' -- q&password=bbb

发现成功重定向进行了登录

4.完成实验

构造语句

发现需要令牌

直接复制之前的set-cookie进行登录,成功完成了实验

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值