SQL注入尝试删除表时出现语法错误

时间:2017-09-28 09:35:53

标签: mysql syntax-error sql-injection

所以我正在进行一项任务,作为其中的一部分,在一个名为test的表上执行SQL注入,从一个用于在名为students的表中输入值的表单。

我一直在尝试

 '; DROP TABLE test; -- 

我收到此错误

Error: INSERT INTO student (student_id, first_name, last_name, DOB, sex, phone, user_id) VALUES ('nhdb', ''; DROP TABLE test; -- ', '', '', '', '', 'u01')
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
'; DROP TABLE test; -- ', '', '', '', '', 'u01')'
at line 1

最初我试图删除学生表,但是当我测试用户是否有权删除该表时,存在外键约束问题。所以我把一个名为test的表放在一起,用户可以毫无问题地删除它。

关于我在哪里出错的任何指导?我确定'; DROP TABLE test; --应该有效。

2 个答案:

答案 0 :(得分:0)

它失败了,因为其余的INSERT - 值在您的示例中被注释掉了。预期七个值,但只提供两个。 还缺少右括号)
由于INSERT失败,DROP也不会执行。

这应该有效:

', '', '', '', '', ''); DROP TABLE test; -- 

答案 1 :(得分:0)

INSERT INTO student (student_id, first_name, last_name, DOB, sex, phone, user_id)
 VALUES ('nhdb', ''; DROP TABLE test; -- ', '', '', '', '', 'u01')

因为你是:

  1. 'nhdb, ''
  2. 之后错过了一个结束括号
  3. 尝试在一个查询中执行两个语句,其中一个是DDL语句,而不是查询
  4. VALUES子句中缺少五个参数。
  5. 尝试将DROP语句插入INSERT语句的中间。
  6. 这甚至没有开始成为有效的SQL。