这只是一个快速的问题,因为我对此领域完全没有经验。我将如何对此进行sql注入? 我想要sql注入的示例。 请不要发表评论,仅输入'或'1'='1,否则将无法正常工作。它会回答的只是elseif语句中的一句话,即“您是如此亲密”。
<?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 "</pre>";
?>
<?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>";
}
?>
如何对该查询进行注入? 请不要将此标记为与我已经阅读过的主要文章重复。该帖子与我尝试过的查询不同。
答案 0 :(得分:1)
只需在$ _POST [“ answer”]中发送以下字符串:
$_POST["answer"] = "' OR '1' = '1";
$answer = $_POST["answer"];
$query = "SELECT * FROM answers WHERE answer='$answer'";
现在,您的查询将如下所示:
SELECT * FROM answers WHERE answer='' OR '1' = '1'
它将为您提供answers
表中的所有行。如果使用此SQL查询结果来检查用户给出的答案是否正确;您将总是得到一些行,因此无论如何回答都将始终通过。
类似地,例如,可以获取所有客户的详细信息,他们的电话号码,电子邮件地址等;如果有人通过customer_id = "' OR '1' = '1"
请完整阅读此主题:How does the SQL injection from the "Bobby Tables" XKCD comic work?