SQL注入DROP TABLE无法正常工作

时间:2014-07-15 12:21:55

标签: mysql sql-injection

我需要使用PHP / MySQL演示SQL Inject。我想在登录表单中注入DROP TABLE查询但它永远不会工作。 (TRUNCATE表工作正常OTOH)。 输入'; drop table users; #作为字段输入后;查询结果是

SELECT * FROM `users` WHERE `email` = ''; DROP TABLE users; #' AND `password` LIKE '3232';

但它永远不会使用mysql_query()函数。当我直接在PHPmyAdmin中复制/粘贴此查询时,它完美地工作并且表被删除。可能是什么问题?

2 个答案:

答案 0 :(得分:3)

默认情况下不启用多个SQL执行。

所以像;drop table这样的SQL注入不起作用。请启用多个sql执行。如果你使用mysqli,可以像http://php.net/manual/en/mysqli.quickstart.multiple-statement.php一样启用它。

有用的SQL注入是:

SELECT COUNT(*) FROM users
WHERE user_id = '$user_id' AND passwd = '$passwd'

用户将passwd插入' || '1' = '1

答案 1 :(得分:1)

这在php / MySQL中是不可能的,因为php不支持堆叠查询。注入分号(;)的那一刻它就会失败。

你可以在php-mysql应用程序中使用sql注入做更多其他更有创意的攻击。<​​/ p>

  1. 枚举所有数据库
  2. 表名和列名
  3. 存储在表格中的值
  4. 上传php后门
  5. 检查SQL-Map。