因缺思汀的繞過(CTF)

題目鏈接:http://ctf5.shiyanbar.com/web/pcat/index.php
老規矩,先看源碼,發現可以看到後臺代碼;
這裏寫圖片描述
打開進行代碼審計,關鍵代碼如下:
這裏寫圖片描述
這裏寫圖片描述
代碼大意:關鍵字過濾;第二部分代碼從數據庫中取出uname,確保取出的數據
只有一行,最後取出的pwd與提交的pwd相比較,相同則輸出flag;
思路:利用group by pwd with rollup在查詢中的一個特點,他可以返回pwd所在的那一條記錄,通過limit控制返回哪一條,因此他不可以返回多條,一旦返回2條及以上,pwd就會爲空,但同一條記錄中的其他字段則是正常的
那麼利用這一點令查詢結果爲空,我們輸入的pwd也爲空值,則構成了if(null==null)爲true
即:輸入的用戶名爲:’ or 1=1 group by pwd with rollup limit 1 offset 2 #
這裏解釋一下此時執行的SQL:
SELECT * FROM interest where uname=’ ’ or 1=1
group by pwd with rollup (在數據庫中添加一行使得pwd=NULL)
limit 1 (只查詢一行)
offset 2 (從第二行開始查詢)

註釋

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章