【发布时间】:2018-12-09 07:32:39
【问题描述】:
早上好,
我had some problems yesterday 得到了帮助,但不幸的是,我的应用仍然没有 100% 完成我想要它做的事情,尽管只是缺少一个小细节。
假设我想要执行 SQL 注入来删除数据库,并在发生这种情况时呈现 PHP 页面。一切正常,直到我希望渲染发生 - 即使注入执行并且在我检查 MySQL 时删除了数据库,仍然没有渲染。问题可能是由于 multi_query 的使用不正确。更多细节在代码中的 cmets 中。
<?php
include("/../../connection.php");
if(isset($_POST["button_one"])){
$username = $_POST['username'];
$password = $_POST['password'];
if($conn->multi_query("SELECT id FROM users WHERE username = '$username' OR password = '$password'")) // IF THE USER HAS A VALID USERNAME OR PASSWORD,
{
do {
if ($result = $conn->store_result()) {
while ($row = $result->fetch_row()) { // THEN ENABLE BUTTON TWO, WHICH HAS TO BE CLICKED TO DROP THE DATABASE
echo "
<script type=\"text/javascript\">
document.getElementById('button_two').disabled=false;
</script>
";
}
$result->free();
}
} while ($conn->next_result());
}
}
if(isset($_POST["button_two"])){
$username = $_POST['username']; // SQL INJECTION TO DROP THE DB HAPPENS HERE
$password = $_POST['password'];
if($conn->multi_query("SELECT id FROM users WHERE username = '$username' OR password = '$password'")) // SQL INJECTION SUCCEEDED
{
do {
if ($result = $conn->store_result()) {
while ($row = $result->fetch_row()) {
if ($result = $conn->query("SHOW DATABASES LIKE 'mydatabase'")) { // NO MORE DATABASE LIKE THAT, IT HAS BEEN DROPPED DUE TO THE INJECTION
if($result->num_rows == 0) {
include("another.php"); // THE PROBLEM IS HERE. EVEN THOUGH THE DB IS DROPPED, THIS PAGE IS NOT RENDERING
}
}
}
$result->free();
}
} while ($conn->next_result());
}
}
?>
任何有用的想法将不胜感激!
【问题讨论】:
-
真的没人吗?想知道问题本身是不是太容易让所有人都懒得回答,还是没有人有任何线索
标签: php mysql mysqli sql-injection mysql-error-1064