sqli labs 七 登陸處sql注入

2022-02-19 07:02:59 字數 1923 閱讀 8452

第十三關:

這關也是乙個登陸口,和上關所說的一樣,先使用'"試一下,讓程式報錯然後判斷後台的sql語句

可以看到後台sql大概是 where name = ('$name')...  這樣的

post資訊中輸入uname=1') or '1'='1' #&passwd=1&submit=submit  可以成功進入

但是沒有顯示賬號密碼之類的,所以不能使用上一關的聯表查詢。嘗試使用上關的報錯查詢試試,輸入

能成功報錯出資料庫名!但是這裡顯示不全,可以不使用group_concat這個函式,利用limit一行一行的查詢

其實這關主要考察的是雙查詢注入(floor的報錯查詢),但是這裡可以使用extractvalue進行報錯,那他的我就不繼續下去了。

第十四關:

這關和第十三關是類似的,只是將')變成了"而已,至於是怎麼判斷的還是使用的'"。

這裡還補充一句,登入框的地方很多時候都沒有報錯資訊,那麼怎麼判斷後台的sql拼湊方式呢? 目前我的辦法是將這些比如1' or '1'='1' #  ;          1" or "1"="1" # ;        1') or '1'='1' #  ; 1")or "1"="1" # 等等做成乙個字典,然後進行fuzz。

第十五關:

好吧,上面剛說麵沒有報錯的情況下應該怎麼辦,這關就遇到了!(說實話,我寫上面那段話的時候是真的沒有看這關的內容)

我剛看到這題的時候還是直接輸入的'",結果發現沒有報錯資訊,這個時候就無法通過報錯直接判斷後台的拼接方式了。

使用上面fuzz的方式是可以判斷的,但是這裡我就直接看後台的實現吧

發現後台是直接用的單引符號,這裡也不會登陸成功後的賬號密碼,所以只能使用盲注了。

我記得我之前在第十一關的時候就嘗試了盲注的,當時沒成功,這裡的情況實際上是和第十一關一模一樣的,後台網上查了下才發現,盲注時應該是

or (ascii(substr((select database()) ,1,1))) >64

而不能是or ascii(substr((select database()) ,1,1)) >64

post 輸入uname=1' or  (ascii(substr((user()),1,1)))>64 #&passwd=1&submit=submit  能登陸成功

輸入uname=1' or  (ascii(substr((user()),1,1)))>200 #&passwd=1&submit=submit

登陸失敗,後面的就不繼續了,利用二分法乙個字元乙個字元的判斷即可。

第十六關:

和第十五關類似,只是將單引符號改為了雙引符號進行拼湊。怎麼判斷後台的拼湊方式? fuzz!!

mongo 登陸 MongoDB的授權登入處理

一 command line 實際操作 我將mongodb使用者分為兩類 全域性使用者和庫使用者。全域性使用者儲存在admin庫中,對所有資料庫都有訪問許可權 庫使用者儲存在單個資料庫中,只能訪問單個庫。使用者資訊儲存在哪個庫,身份驗證時就得到那個庫中才能驗證。使用者資訊儲存在db.system.u...

登陸中的SQL注入

在web應用程式的登入驗證程式中,一般有使用者名稱 username 和密碼 password 兩個引數,程式會通過使用者所提交輸入的使用者名稱和密碼來執行授權操作。我們有很多人喜歡將sql語句拼接起來。例如 select from userswhere username txtusername.t...

引數化登陸防止SQL注入

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...