證明我有一個客戶端提供塊下面的代碼:MySQL的注入攻擊:概念
$user = $_POST['user'];
$sql = "SELECT * FROM users WHERE user = '" . $user . "'";
$dbh->query($sql);
此外,該代碼不會回顯任何輸出到屏幕現在,所以它並不能幫助我如果我選擇多個用戶。這不會直觀地向客戶展示任何東西。
很明顯,我認爲這是容易注射,但我不能找到一種方法來顯示客戶端如何做到這一點的工作。我試圖放下桌子,但似乎一次只允許一個陳述。
這裏是我已經試過到目前爲止 ' OR 1=1; DROP TABLE users; SELECT * FROM users WHERE 1='1
,但不起作用。
是的,您的SQL可以被注入以及強制回顯/轉儲信息。感謝上市*我到目前爲止所嘗試的*但如果這是您做過的唯一測試,我承諾這是不夠的。 – PenguinCoder
沒有被允許在1個字符串中進行2個查詢,在一個變更的查詢中很難變成一個'SELECT',除了最後一個'PROCEDURE'調用,但是這需要一個相關的'PROCEDURE'。就個人而言,我發現OR 1 = 1 FOR UPDATE UNION SELECT SLEEP(1000000000);'刺激性不夠(不可變的記錄,如果你的登錄名還在users表中存儲'last-login'列(或任何其他'UPDATE '給用戶...所有登錄都會在睡眠期間阻塞(或者終止查詢)) – Wrikken
Hm,@kylex:[它似乎取決於環境](http://stackoverflow.com/ (問題/ 6346674/PDO支持換多查詢-PDO MySQL的-PDO-mysqlnd) – Wrikken