2014-07-15 56 views
1

我需要演示使用PHP/MySQL的SQL注入。我想在登錄表單中注入一個DROP TABLE查詢,但它永遠不會工作。 (TRUNCATE表工作正常OTOH)。 輸入'; drop table users; #作爲現場輸入後;查詢原來是SQL注入DROP TABLE不起作用

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

但它永遠不會使用mysql_query()函數。當我直接將此查詢複製/粘貼到PHPmyAdmin中時,它可以很好地工作,並且表被刪除。可能是什麼問題?

+0

相同的數據庫用戶正在使用PHP和PHPmyAdmin都與DROP previlage – aceph

+1

閱讀精美的手冊。 mysql_query執行一條語句。你有兩個。 –

+1

PHPmyadmin如何處理這種多重查詢? – aceph

回答

0

這是不可能在php/MySQL中,因爲php不支持堆棧查詢。你注入分號(;)的那一刻就會失敗。

雖然你可以在php-mysql應用程序中使用sql注入來做很多其他更有創意的漏洞攻擊。

  1. 枚舉所有數據庫
  2. 表名和列名存儲在表
  3. 值上傳一個php後門

檢查出SQL-MAP爲好。

+0

插入一個';'是沒有問題的,除非你在它之後開始一個新的語句。 – Gumbo

3

默認情況下未啓用MULTIPLE SQL執行。

因此像SQL注入;drop table將無法​​正常工作。請啓用多個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