1. 程式人生 > >記一道CTF 中遇到的SQL注入新型萬能密碼問題

記一道CTF 中遇到的SQL注入新型萬能密碼問題

0x00. 引言

我們平時遇到的SQL注入萬能密碼都是形如admin' or '1'='1, 這種使用or 關鍵字使得查詢結果永真,或者形如:' UNION Select 1,1,1 FROM admin Where ''=',這種使用union使得查詢結果永真,

但是有一次我在CTF的比賽中遇到的SQL注入問題,使用這兩種萬能密碼都不好使,不管怎麼變換形式,都不好使,顯然是or和union 關鍵字被過濾掉了,

下文我詳細介紹我是如果繞過的,並給出一個新型SQL注入萬能密碼,也許在以後的CTF比賽中對大家有幫助。

0x01、新型萬能密碼

題目是這樣的:

根據提示,應該是過濾了常見的注入手段

猜測後臺是這樣的邏輯:

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

先試試常規萬能密碼:

admin' or 1=1-- -

 

or 和 --被過濾掉了,這條路估計走不通,試試其他形式的 :比如利用註釋:

username:admin'/*hello
passeord = world*/#'

發現 # 和 * 被過濾掉了,沒有了or ,#, * 就不能萬能密碼了嗎? 顯然不是

最後通過的是這樣payload,也就是我今天要介紹的新型萬能密碼:

 username =  secpulse'='  password = secpulse'='

拼接起來就是:

select * from table where username='secpulse'='' and passowrd = 'secpulse'='';

sql解釋引擎是從左至右執行: 資料庫肯定沒有secpulse這個使用者,結果是false flase = '' 結果就是 true啊

password 同理,然後獲得flag, 美滋滋:

 

0x02. 總結

CTF這類比賽的好處就是可以遇到各種生產環境中沒有的場景,給我們提供了各種起奇淫技巧施展的舞臺,可以開啟我們的弄懂,對以後的滲透測試是有很大好處的。