Объяснение кодовой строки в php для ctf - PullRequest
0 голосов
/ 05 мая 2020

Ребята, я учился решать ctf и видел эту строку в php

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

Это в for l oop с $ i в качестве инкрементатора, поэтому не понял, что происходит следующее

  1. что это означает: ${"result$i"}
  2. помещаем $tables[$i] внутрь {}
  3. Может кто-нибудь объяснить это бит: ($order != '' ? "ORDER BY ".$db->escape_string($order)." " : "")

1 Ответ

0 голосов
/ 05 мая 2020
  1. что означает это: `$ {" result $ i "}

Здесь вы определяете динамическую c переменную, которая начинается с 'result' и заканчивается число для $ i = 1 вы получите $ result1` и так далее за каждые $ i

помещая $tables[$i] внутрь {}

здесь также вам нужно содержимое массива с именем table, поэтому с $ i = 1 вы получите tablenaME, который находится в таблице {1]

Может ли кто-нибудь объяснить этот бит: ($order != '' ? "ORDER BY ".$db->escape_string($order)." " : "")

Вот вы, c, если переменная% order вообще имеет какое-либо содержимое, если Итак, добавьте в строку запроса ORDER BY содержимое $ order else ничего не добавлять '' к строке. ORDER BY всегда декалируется в конце, и если у вас есть имя столбца и порядок сортировки в сохраненном ионе, переменная, которую вы добавляете в строку

...