Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 同一请求中的两个SQL使用相同的参数,但返回的列数不同。可以进行sql注入吗?_Mysql_Sql_Sql Injection - Fatal编程技术网

Mysql 同一请求中的两个SQL使用相同的参数,但返回的列数不同。可以进行sql注入吗?

Mysql 同一请求中的两个SQL使用相同的参数,但返回的列数不同。可以进行sql注入吗?,mysql,sql,sql-injection,Mysql,Sql,Sql Injection,如果同一请求处理程序中有两个SQL,如下所示: select count(*) from user where id={$id}; select * from user where id={$id}; 由于参数“id”未被过滤,因此可以执行sql注入。但是,由于两个sql返回的列数不同,因此在尝试使用union时,它始终会返回sql错误“使用的SELECT语句具有不同的列数” 在这种情况下,有可能成功地进行sql注入吗?这里肯定就是这样 至于可利用性,您可以使用基于布尔值的技术: 123 AN

如果同一请求处理程序中有两个SQL,如下所示:

select count(*) from user where id={$id};
select * from user where id={$id};
由于参数“id”未被过滤,因此可以执行sql注入。但是,由于两个sql返回的列数不同,因此在尝试使用union时,它始终会返回sql错误“使用的SELECT语句具有不同的列数”

在这种情况下,有可能成功地进行sql注入吗?

这里肯定就是这样

至于可利用性,您可以使用基于布尔值的技术:

123 AND EXISTS (SELECT 1 FROM mysql.user WHERE user='root' AND password LIKE '*235FBD5A943%')

因此,只有当root的密码散列以
*235FBD5A943
开头时,整个
中的
条件才为true。使用这种基于布尔值的技术(附加条件true或false),您可以使用适当的方法读取任何可访问的信息。

erm,如果
$id
“1;删除用户;”
@Jodrell堆叠查询不受支持。我不明白为什么人们总是问X构造或Y构造是否允许他们继续执行字符串连接并避免SQL注入。正确的解决方案是使用参数。这早已为人所知,实际上任何现代语言、库和数据库的组合都允许您使用它们。您可以使用基于布尔值的技术。但是第二辆车不是在第一辆车坏了的时候被执行的吗?如果你买了一辆门锁坏了的车,你可以随时归还它,不管里面是否有值钱的东西。用户对查询的输入是一把破锁。我尊重你的知识,但我讨厌你用脚本帮助孩子破解答案。@YourCommonSense那么你希望这里有什么答案?比如“是的,它是可以利用的,但我不会告诉你怎么利用的”?或者你会因为害怕告诉人们如何利用它而投票将它作为离题而关闭吗?是的,我害怕帮助孩子们编写脚本。让他们的把戏这么简单。如果他们想破解,至少让他们学习SQL。这尤其适用于SQL注入领域,因为您不需要知道任何特定的注入技术来保护。@您的常识sqlmap肯定也可以检测并利用此漏洞。它的利用并没有我透露的任何先进的黑客技术那么复杂。