繁体   English   中英

mysql_query注入-替换返回的字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM