【问题标题】:Explanation of codeline in php for ctfphp for ctf 中代码行的解释
【发布时间】:2020-08-20 13:55:12
【问题描述】:

伙计们,我正在学习解决 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)." " : "")

【问题讨论】:

    标签: php mysql loops ctf


    【解决方案1】:
    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 总是在末尾标出,如果您在保存的离子中有列名和排序顺序,则将变量添加到字符串中

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 1970-01-01
      • 2015-02-11
      • 2017-08-18
      • 2018-05-16
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2011-01-28
      相关资源
      最近更新 更多