0

伙计们,我正在学习解决 ctf 并在 php 中看到了这一行

${"result$i"} = $db->query("SELECT * FROM {$tables[$i]} " . ($order != '' ? "ORDER BY ".$db->escape_string($order)." " : ""));

这是在以 $i 作为增量器的 for 循环中,所以不明白发生的事情如下

  1. 这是什么意思: ${"result$i"}
  2. 放入$tables[$i]{ }
  3. 有人可以解释一下吗:($order != '' ? "ORDER BY ".$db->escape_string($order)." " : "")
4

1 回答 1

0
  1. 这是什么意思:`${"result$i"}

在这里,您定义了一个以“result”开头并以 $i = 1 的数字结尾的动态变量,您将得到 $result1`,以此类推每个 $i

  1. 放入$tables[$i]{ }

在这里,您还想要一个名为 table 的数组的内容,因此使用 $i= 1 您可以获得 table{1] 中的 tablenameME

  1. 有人可以解释一下吗:($order != '' ? "ORDER BY ".$db->escape_string($order)." " : "")

如果变量 %order 有任何内容,你会在这里检查,如果所以添加到查询字符串 ORDER BY 的 $order 内容,否则在字符串中添加任何内容。ORDER BY 总是在末尾标出,如果您在保存的离子中有列名和排序顺序,则将变量添加到字符串中

于 2020-05-05T19:20:16.953 回答