實驗吧-因缺思汀的繞過

剛入手這道題目的時候,一臉懵逼。但是擦好看源代碼,發現有提示。注意綠色字體
進入查看源代碼
太長,截不下
截圖中已經看出了一些障礙,題目過濾了好多sql語句,一開始我嘗試sql注入,但是發現沒有任何作用,當我看到那些過濾掉的sql語句關鍵字的時候,就看看有哪些沒有過濾掉的,發現or,and,group by這些函數沒有被過濾掉。
嘗試 'or 1=1# 這裏我只在uname裏面輸入了,然後把後面的註釋了。
這裏寫圖片描述
出現了一顆賽艇。觀察源代碼。
這裏寫圖片描述
然後只差一步,但是卻卡住。根據上面過濾發現,limit 可以使用,但是不能使用,()。沒辦法,百度,發現有一個很好用的函數offset。例如:

select * from user limit 2 offset 0

這段代碼表示從表的第一行開始,返回兩行。
於是嘗試使用。

' or 1=1 limit 1 offset 0#
' or 1=1 limit 1 offset 1#
' or 1=1 limit 1 offset 2#

當offset 2的時候,返回的變成一顆賽艇,而0跟1都是 亦可賽艇。
證明表爲兩行。
又卡住了,百度得到 group by with rollup。實際操作得到,利用該語句,可以在查詢的最後一行多出來一個空值。
這裏寫圖片描述
再加上源代碼中提供了一個 == 。NULL跟空字符串是相等的,所以可以使:if($key['pwd'] == $_POST['pwd']) 成立,繼而可以得出flag。
所以整個pyload如下:

' or 1=1 group by pwd with rollup limit 1 offset 2#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章