mysql_query注入 - 替换返回的字段

时间:2015-12-15 22:48:58

标签: php mysql mysqli

我试图学习和理解mysql注入,我已经创建了演示案例。

SELECT ret_variable FROM data WHERE name = '".$name."' AND age = ".$age;

然后if(ret_variable == 2){something}但查询最初返回1,我需要强制它输出2

如何修改$age变量以设置ret_variable的自定义输出字段(仅在响应中)? 我尝试了很少的OR方法,但没有用过。

1 个答案:

答案 0 :(得分:0)

除了学习之外,我没有看到任何实际应用。我假设你知道代码,你有权测试这个。所以,让我们开始吧!

当数据库中有一行值为2时,您只能为ret_variable返回2作为ret_variable,并且您知道该行的名称值。例如,您可以输入该名称和以下内容以绕过年龄的正确值。

  

年龄和ret_value = 2

这将创建以下查询:

SELECT ret_variable FROM data WHERE name = 'John' AND age = age AND ret_value = 2;

mysql注入的原理是对查询的这种操作。但是你不能强制返回一个值,除非数据库中有一行用于ret_variable这个值,你可以以某种方式选择这一行。

如果您不知道名称(或者没有已知名称的记录,且ret_variable为2),则无法进行。

由于AND运算符优先于OR运算符,因此无法操作查询以将2作为ret_variable。这是因为名称='?'部分永远都会失败。