Как получить значение переменной PHP через запрос SQL? - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время я работаю над проблемой вызова, которая просит вас отправить SQL-запрос, чтобы получить ответ.Однако это не простая инъекция SQL, так как исходный код PHP имеет небольшую защиту, которая выводит ответ только при наличии определенного ввода.Вот код ниже:

<code><?php
     include "config.php";
     ini_set('error_reporting', E_ALL);
     ini_set('display_errors', 'On');

     $answer = $_POST["answer"];
     $debug = $_POST["debug"];
     $query = "SELECT * FROM answers WHERE answer='$answer'";
     echo "<pre>";
     echo "SQL query: ", htmlspecialchars($query), "\n";
     echo "
";?>

Это просто выводит SQL-запрос, который я вставил. Ниже это мера защиты:

 <?php
    $con = new SQLite3($database_file);
    $result = $con->query($query);

    $row = $result->fetchArray();
    if($answer == $CANARY)  {
      echo "<h1>Perfect!</h1>";
      echo "<p>Your flag is: $FLAG</p>";
    }
    elseif ($row) {
      echo "<h1>You are so close.</h1>";
    } else {
      echo "<h1>Wrong.</h1>";
    }
  ?>

Моя теория состоит в том, что можно отобразить значение $ CANARY через SQL-запрос со строкой, которая говорит echo "SQL query: ", htmlspecialchars($query), "\n"; Однако я не согласен с тем, как это сделать.

Я понимаю, что существует аналогичноевопрос об этой задаче, но я думаю, что на самом деле это не вопрос о том, как поместить часть PHP в SQL, а о том, как выполнить SQL-инъекцию. Мои знания PHP ограничены, так как я в основном начал изучать его сегодня, когда началэта проблема, потенциально это инъекция PHP?

Спасибо всем, кто сможет мне помочь с этим!

1 Ответ

0 голосов
/ 09 октября 2018

Да.SQL инъекция может быть.Например, если установлено

$answer = "'; DELETE FROM answers WHERE ''='"; 

ваш код удаления таблицы ответов

Вам необходимо использовать

SQLite3::escapeString($answer)

И конструкцию

$row = $result->fetchArray();

получить массивзначений из таблицы ответов, и вам нужно сравнить значение из массива, как я думаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...