[英]mysql_query inject - replace returned field
我试图学习和理解mysql注入,我创建了演示案例。
SELECT ret_variable FROM data WHERE name = '".$name."' AND age = ".$age;
然后if(ret_variable == 2){something}
但查询最初返回1,我需要强制其输出2
如何修改$age
变量以设置ret_variable
自定义输出字段(仅在响应中)? 我用OR尝试了几种方法,但没有惊慌。
除了学习,我看不到任何实际的应用。 我假设由于您知道代码,因此您有权进行测试。 因此,让我们一起去吧!
仅当数据库中有行的ret_variable值为2并且您知道该行的名称值时,才可以为ret_variable返回2。 例如,您可以输入该名称和以下内容来绕过年龄的正确值。
年龄AND 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运算符,因此您无法操纵查询以将ret_variable设为2。 这是因为名称='?' 部分将永远失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.