第十三關:
這關也是乙個登陸口,和上關所說的一樣,先使用'"試一下,讓程式報錯然後判斷後台的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...