我們正在研究班級的實驗室,我似乎無法找到我缺少的東西。下面的代碼是一個SQL查詢來驗證用戶:SQL注入問題
$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender,
FROM USERS_TABLE
WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’");
$chk = mysql_fetch_array($sel1);
if (found one record)
then {allow the user to login}
我們應該找到一個對SQL注入漏洞,我認爲在於:
WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’");
要利用它,我們基本上應該使用一個非常通用的用戶名和密碼錶單登錄到網站上的管理員配置文件。給定的信息是我們知道配置文件的名稱是admin。我們只能在網站上使用用戶名輸入。
閱讀以下文章Security Idiots和書中的一節格魯吉亞魏德曼滲透測試動手入門介紹。這些都是一些我試過的東西:
- 管理員OR 1--
- 管理 ' -
- 管理' 和1 = 1--
和更多的變化這個。我的理解是,我正在選擇管理配置文件,並使用「'」完成該部分,然後強制真實並殺死該行上的其餘代碼。但是,沒有任何我嘗試似乎正在工作。
同樣重要的是要注意,在本實驗中,我們有特殊配置的虛擬機,允許此攻擊行得通。
所以我在正確的軌道上,或者我不理解SQL注入攻擊背後的邏輯。我不一定在尋找什麼是我正在尋找的代碼,但我擔心我走錯了方向,錯過了一些東西。
任何幫助,非常感謝。我會很樂意詳細說明任何事情。 謝謝。
試試'管理') - '你也確定在問題中的SQL是正確的嗎?'性別,FROM USERS_TABLE'在'FROM'之前不應該有逗號 –
不幸的是,該用戶名條目中沒有骰子。而且我最初從我們的實驗室指令中複製了這些代碼,但實際上它並不是來自文件本身,因此可能會從指令中輸入錯誤。我們沒有給出文件位置。這會影響漏洞利用嗎?代碼必須可操作,因爲有多名學生根據Dropbox提交的內容完成了代碼。所以如果沒有應該是一個逗號,我想在文件中它不存在。 – Codey
在FROM之前有逗號是SQL錯誤。但既然你確定代碼正在工作,也許它只是一個錯字。 –