記一道CTF 中遇到的SQL注入新型萬能密碼問題
0x00. 引言
我們平時遇到的SQL%E6%B3%A8%E5%85%A5/">SQL注入萬能密碼都是形如admin' or '1'='1, 這種使用or 關鍵字使得查詢結果永真,或者形如:' UIO/">NION 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這類比賽的好處就是可以遇到各種生產環境中沒有的場景,給我們提供了各種起奇淫技巧施展的舞臺,可以開啟我們的弄懂,對以後的滲透測試是有很大好處的。