[BMZCTF]-hitcon_2017_ssrfme

[BMZCTF]-hitcon_2017_ssrfme
[BMZCTF]-hitcon_2017_ssrfme
依旧是直接给出题目源代码
这里列一下几个用到的函数吧

file_put_contents — 将一个字符串写入文件
pathinfo — 返回文件路径的信息
escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

这题代码简而言之就是会先生成一个文件夹,路径是orange+你的ip地址经过MD5加密后的密文,所以实际位置就是/sandbox/md5(orange+ip)

接下来就是get访问一个url,url可控
然后就是一个可控的filename,将会生成一个文件在/sandbox/md5(orange+ip),也就是说会有/sandbox/md5(orange+ip)/filename,最后会将url访问到的数据写在filename

总的来说,就是url记录你想查看的文件路径,filename确定一个文件名,你访问该文件可以看到url记录的文件路径的内容

那就开始操作吧
[BMZCTF]-hitcon_2017_ssrfme
[BMZCTF]-hitcon_2017_ssrfme

md5这里是32位小写
[BMZCTF]-hitcon_2017_ssrfme
这里说我没有权限访问该路径,这让我一下子就有点懵了,我还以为cookie什么的有问题,或者是我做题思路错了,后来看了大佬们的wp才知道,这里没权限并不影响后续操作

[BMZCTF]-hitcon_2017_ssrfme
[BMZCTF]-hitcon_2017_ssrfme
这里看到一个/flag,访问看看
[BMZCTF]-hitcon_2017_ssrfme

[BMZCTF]-hitcon_2017_ssrfme
emem啥也没有,应该是这里没错的啊,后面转念一想,flag应该记录在文本文件才对

[BMZCTF]-hitcon_2017_ssrfme
[BMZCTF]-hitcon_2017_ssrfme
成功拿下

上一篇:多线程操作std::queue时,必须lock


下一篇:移位运算