Mysql 如果我只知道用户名,如何使用SQL语句从网站获取数据?

Mysql 如果我只知道用户名,如何使用SQL语句从网站获取数据?,mysql,sql,sql-injection,Mysql,Sql,Sql Injection,我是MYSQL新手,我的学校任务是: 这是显示如何对用户进行身份验证的PhP代码: $input_uname = $_GET[’username’]; $input_pwd = $_GET[’Password’]; $hashed_pwd = sha1($input_pwd); ... $sql = "SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE

我是MYSQL新手,我的学校任务是:

这是显示如何对用户进行身份验证的PhP代码:

$input_uname = $_GET[’username’];
$input_pwd = $_GET[’Password’];
$hashed_pwd = sha1($input_pwd);
...
$sql = "SELECT id, name, eid, salary, birth, ssn, address, email,
nickname, Password
FROM credential
WHERE name= ’$input_uname’ and Password=’$hashed_pwd’";
$result = $conn -> query($sql);
// The following is Pseudo Code
if(id != NULL) {
if(name==’admin’) {
return All employees information;
} else if (name !=NULL){
return employee information;
}
} else {
Authentication Fails;
}
我尝试过很多不同的事情,比如:

从凭证中选择*,其中name='admin'

从凭证中选择*,其中name='admin'和Password='xyz'
我把这句话放在用户名框中,
xyz
放在密码框中。 我甚至不确定我是否正确地处理了这个问题。SQL语句应该在用户名框中,对吗?密码框是空的吗?我的教授在课堂上没有讲过这个。有人能澄清一下这是怎么做到的吗?我在网上看到过一些例子,它们看起来都有点类似于上面的例子。但是,每次我都会遇到同样的错误:

`There was an error running the query [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin' and password= "xyz"; and Password= da39a3ee5e6b40d3255bfe95601890afd80 at line 3]\n`

提前谢谢大家

我不同意这个问题是为了教人们如何黑客。它旨在教导后端开发人员对输入进行清理,以避免sql注入或其他类型的攻击

要回答您的问题,您可以将密码字段留空,只需使用用户名即可

您可以在服务器代码上看到,当输入按原样进行并放在sql语句上时,没有对输入进行任何控制。因此,为了使sql语句执行您正在查找的操作,字段可以具有以下值:

admin'; --

连字符是sql注释,允许您禁用select语句的最后一部分,以便不必提供密码。以及报价和报价;将关闭该声明。结果,您将以管理员身份登录;-)

我不同意这个问题是为了教人们如何黑客。它旨在教导后端开发人员对输入进行清理,以避免sql注入或其他类型的攻击

要回答您的问题,您可以将密码字段留空,只需使用用户名即可

您可以在服务器代码上看到,当输入按原样进行并放在sql语句上时,没有对输入进行任何控制。因此,为了使sql语句执行您正在查找的操作,字段可以具有以下值:

admin'; --

连字符是sql注释,允许您禁用select语句的最后一部分,以便不必提供密码。以及报价和报价;将关闭该声明。结果,您将以管理员身份登录;-)

事实证明,这就是我的工作原理:

Admin’ or ‘1=1
我不完全确定这为什么也有效,但它确实有效:

Admin’ or ‘

事实证明这对我来说很有效:

Admin’ or ‘1=1
我不完全确定这为什么也有效,但它确实有效:

Admin’ or ‘

黑客攻击和教人们黑客(甚至是所谓的道德黑客)不是本网站支持的东西。我投票将这个问题作为离题来结束,因为它是问如何黑客。这是学校作业,尽管我不在乎,我认为我们不应该在这个网站上教如何黑客。我同意@Hogan,如果你想为学校作业而学习,那就去问你的老师。请理解,我们无法确认您是否真的是一名学生。“我这样做是为了学校”正是一个想成为黑帽黑客的人会说的话。黑客和教人们黑客(甚至是所谓的道德黑客)不是这个网站支持的东西。我投票结束这个问题,因为它是问如何黑客是为了学校作业,尽管我不在乎,我认为我们不应该教如何在这个网站上黑客。我同意@Hogan的观点,如果你想为学校作业而学习,那就去问你的老师。请理解,我们无法确认您是否真的是一名学生。“我这样做是为了学校”正是一个想成为黑帽黑客的人会说的话和空格这只有8个字符:DI之前声明的解决方案是8个字符,然后删除了该注释。这就是它没有意义的原因。注意,如果您关闭
和空格这只有8个字符:DI之前声明的解决方案是8个字符,然后删除了该注释。这就是为什么它没有意义。是的,一般来说,如果我们不知道用户名,会添加一个真实的条件。但在这里,您不需要这样做,因为您知道管理员用户名。关于第二次写入,我认为它将在sql查询中生成一个错误,但可能查询的一部分仍在执行。不保证100%工作是的,一般来说,如果我们不知道用户名,会添加一个真实条件。但在这里,您不需要这样做,因为您知道管理员用户名。关于第二次写入,我认为它将在sql查询中生成一个错误,但可能查询的一部分仍在执行。不保证100%工作