sqli-labs(八)——修改密碼處sql注入+http頭sql注入


第17關:

這是一個重置密碼的功能存在sqk注入,嘗試賬號密碼都輸入'",發現只會顯示登陸失敗,沒有報錯信息。

這個時候先推測一下后台的sql形式大概應該是: update users set password = ? where name =?

那么實際上是有兩個處注入,我們可以先嘗試name參數的注入

分別輸入:

uname=1' or 1=1 # &passwd=1&submit=Submit

uname=1') or 1=1 # &passwd=1&submit=Submit

uname=1"or 1=1 # &passwd=1&submit=Submit

uname=1") or 1=1 # &passwd=1&submit=Submit

發現頁面都沒有變化,於是我初步判斷username參數可能沒有注入漏洞

嘗試password參數,這里我踩了一個坑,我開始輸入的是

分別輸入

uname=1 &passwd=1' or 1=1 # &submit=Submit

uname=1 &passwd=1') or 1=1 # &submit=Submit

uname=1 &passwd=1"or 1=1 #&submit=Submit

uname=1 &passwd=1") or 1=1 #&submit=Submit

發現頁面也沒有變化,后來看了源碼才發現

這里會先用uname進行查詢操作,存在該用戶才會進行修改操作,於是我輸入

uname=admin &passwd=1' or 1=1 # &submit=Submit

顯示成功頁面了,說明后台是使用的單引符號進行的拼湊。

輸入uname=admin &passwd=1‘&submit=Submit  ,看下程序是否會報錯(如果不報錯,就只能嘗試盲注了)

 

 可以看到有報錯信息,可以先嘗試報錯注入。

后面的就直接將select user()替換成其他的查詢語句即可。

這里還有一個點需要注意的,concat里面不能直接使用~,必須用0x7e。

 

第十八關:

這關是一個關於http header的注入

使用正確的賬號密碼登陸后發現,會將http header中的User-Agent顯示在頁面上,這關需要利用到burp,輸入正確的賬號密碼后,提交,使用burp攔截。

我在User-Agent后面加單引符號后,發現頁面會爆sql的錯誤,如下圖

 

從報錯信息可以看到后面還有兩個參數,一個是ip,一個是用戶名。如果對sql語句有一定了解的人,應該知道后台應該是個insert的操作

INSERT INTO 表名稱 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

不管是上面哪一種,我們只需要使用報錯注入后將后面的的參數補全,然后加上注釋,如下圖:

 

成功查詢出數據

 

后面的操作就不繼續了。
HTTP 請求頭中除了 User-Agent可能存在sql注入意外,還有referer、X-Forwarded-For可能存在sql注入。

第十九關:
這是一個referer的注入,上一關也提到了,測試方法和上一關完全一樣,只是出現的地方不一樣而已。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM