登陸一下可以麼?

2022-07-18 03:00:20 字數 1354 閱讀 8610

開啟連線出現以下情況:

先試試username=admin'--&password='or''='

回顯:對不起,沒有此使用者!

這時候--和or被過濾看起來好可怕,但是單引號'沒被過濾就是最幸福的事兒了(雖然有可能是經過轉義的,但題目中說只是過濾,沒說轉義,( # ▽ # ))

這時候其實只要帳號和密碼都上萬能密碼,啥都搞定,看似被過濾了n多n多,但卻是最容易注入進去的。

來乙個過法:)

username=tghost'='&password=tghost'='

flag立馬就拿到,為何能過呢?很多人就疑問了?沒有or也能萬能注入?

解析過程看下面

- - - - - - - - - - - -

假設sql語句如下

select * from user where username='使用者名稱' and password='密碼'

當提交username=tghost='&password=tghost'='

語句會變成如下:

select * from user where username='tghost'='' and password='tghost'=''

這時候還不夠清晰,我提取前一段判斷出來(後面的同樣道理)

username='tghost'=''

這是有2個等號,然後計算順序從左到右,

先計算username='tghost' 一般資料庫裡不可能有我這個小名(若有,你就換乙個字串),所以這裡返回值為0(相當於false)

然後0='' 這個結果呢?看到這裡估計你也懂了,就是返回1(相當於true)

所以這樣的注入相當於

select * from user where 1 and 1

也等於 select * from user

(這題只有篩選出來的結果有3個以上才會顯示flag,沒有就一直說「對不起,沒有此使用者!!」)

好了,繼續嘮叨幾句,上面那個比較是弱型別的比較,

以下情況都會為true

1='1'

1='1.0'

1='1後接字母(再後面有數字也可以)'

0='除了非0數字開頭的字串'

(總體上只要前面達成0的話,要使語句為true很簡單,所以這題的萬能密碼只要按照我上面的法子去寫一大把)

tips:0='除了非0數字開頭的字串',這個我修改為0='字母開頭的字串'還有='0開頭但後面沒接其他數字的字串'

登陸一下好麼?

這個題過濾了絕大多數東西,然而留下了最關鍵的單引號。1 雙等號繞過。假設sql語句如下 select from user where username 使用者名稱 and password 密碼 現在我們知道單引號和等號沒有被過濾 這個題目是只過濾指定字元,測試一下就知道哪些被過濾了 那麼可以用一下...

CTF 登陸一下好麼?

select from user where username 使用者名稱 and password 密碼 利用 1 1 0 0 這樣顯然不行,因為查詢到資料庫中沒有username 1 的元組,返回了0 而 0 1 所以需要改為 username 1 0 password 1 0 先看前面user...

注入技巧 (登陸一下好嗎)

通過這道題提示下寄幾 不是所有有關sql語句的注入都要報庫名錶名欄位名!首先開啟這道題,是倆輸入框,輸入1和1有回顯,輸入union等字元會不顯示,想著應該是回顯注入 此時應自動腦補sql語句 select from user where username and password 後經驗證是這乙個...