1. 程式人生 > 其它 >攻防世界-web:PHP2

攻防世界-web:PHP2

題目描述

暫無

題目截圖


只提示了一句話:Can you anthenticate to this website?
估計是讓認證繞過,登入網站。

解題思路

檢視請求及響應包,未發現提示或可疑資訊。
對網站進行目錄探測。

並未發現可疑檔案及路徑。
經過百度,發現存在phps原始碼洩露。
直接訪問index.phps,發現網站原始碼。

分析原始碼:
1)接受一個引數id,且id的值不能等於admin
2)id的值進行URL解碼後,要等於admin

這道題的解題核心就是二次URL編碼繞過。
我們都知道,當我們提交給伺服器的任何資料都會在解析時進行一次URL解碼操作,這個操作是預設的。
admin 的 一次URL編碼為 %61%64%6d%69%6e
如果我們直接向伺服器提交 ?id=admin 和 ?id=%61%64%6d%69%6e,最終到伺服器解析的最終結果都是admin
如果我們將 admin 進行二次URL編碼,到達伺服器的解析結果為 admin的一次URL編碼:%61%64%6d%69%6e
根據題目程式碼,進行urldecode後,最終結果為 admin,所以直接傳入 admin的二次URL編碼即可獲取flag。
URL二次編碼Python:

def URL_encode(str):
	a = ''
	for i in str:
		a+="%"+hex(ord(i))[2:]
	return a

a = "admin"
print(URL_encode(URL_encode(a)))

admin的二次編碼結果為:
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
直接傳參id=%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65,即可獲得flag

提交得分