我试图学习和理解mysql注入,我已经创建了演示案例。
SELECT ret_variable FROM data WHERE name = '".$name."' AND age = ".$age;
然后if(ret_variable == 2){something}
但查询最初返回1,我需要强制它输出2
如何修改$age
变量以设置ret_variable
的自定义输出字段(仅在响应中)?
我尝试了很少的OR方法,但没有用过。
答案 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。这是因为名称='?'部分永远都会失败。