执行SQL注入(交互式练习)

执行SQL注入(交互式练习),sql,sql-injection,server-side-attacks,Sql,Sql Injection,Server Side Attacks,我正在努力解决大学里的一个互动练习。有一个用户名字段和一个密码字段。我必须在不知道密码的情况下用我的学生ID登录(我当然知道,但我不想在这里透露)。在尝试了一些简单的东西之后,我得到了下面的错误消息。我想这应该对我有帮助,但我不确定。也许有人能给我一个提示 看起来您的或1=1在正确的轨道上,但是您有一个语法错误,因为原始查询中的字符串在您关闭后再次关闭。如果以注释”或1=1--结束注入,则会告诉服务器忽略语句的其余部分 编辑: 我不知道为什么注释方法不起作用,但即使您使用了前面提到的另一种重新打

我正在努力解决大学里的一个互动练习。有一个用户名字段和一个密码字段。我必须在不知道密码的情况下用我的学生ID登录(我当然知道,但我不想在这里透露)。在尝试了一些简单的东西之后,我得到了下面的错误消息。我想这应该对我有帮助,但我不确定。也许有人能给我一个提示


看起来您的
或1=1在正确的轨道上,但是您有一个语法错误,因为原始查询中的字符串在您关闭后再次关闭。如果以注释
”或1=1--
结束注入,则会告诉服务器忽略语句的其余部分

编辑: 我不知道为什么注释方法不起作用,但即使您使用了前面提到的另一种重新打开字符串的技术,我现在看到这仍然不够——AND的优先级高于OR,因此您将获得所有行,而不仅仅是包含用户名的行。 你可以试试

' OR name='myId
产生

WHERE name='myId' AND password='' OR name='myId'

因此,它将匹配任何具有正确用户名和密码的行,或任何具有正确用户名的行。

您可以尝试
'或'1'='1
'或1=1--
,类似的语法错误是因为代码中的查询字符串未关闭,因此,您应该尝试关闭它。

一句忠告……始终添加错误消息的文本。有些人可能无法阅读您发布的图像。感谢您的回答,不幸的是,这不起作用。使用您的解决方案,我得到:从登录名中选择name、password,其中name='myID'和password=''或1=1--'您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1Hello行“”附近使用的正确语法,谢谢您的回答。您的第一个建议没有任何错误,但它告诉我答案是错误的。对于您的第二个建议,我会收到错误消息:选择name,password FROM login,其中name='myID'和password=''或1=1--'您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“%”附近要使用的正确语法