抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

开始只是给了我们一段话,让我们去找,先看看网页源码。

发现有其他关联连接,进去之后又看到关联连接。

我们继续进去,然后说“看清楚了吗?”

secret3

看到这里,我们要用burpsuite看看,到底有什么东西。

secret4

看到返回页中有这个信息,进去之后有下面的php代码。

1
2
3
4
5
6
7
8
9
10
11
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
} // 如果有“../”、“tp”、“input”、“data”字符,则不能拿到flag.
include($file);
//flag放在了flag.php里
?>

从过滤字符可以考虑是否有文件包含漏洞。同时还提示了flag在flag.php里面。

这时我们试试filter

?file=php://filter/convert.base64-encode/resource=flag.php

解码之后即可达到flag。


补充:

一、重定向与转发

在上面有action.php直接跳转到end.php这里涉及到了重定向,与此类似的还有一个转发

http响应头location指示了其所连接对象的url位置。还可以用状态码302判断重定向。

重定向(Redirect):就是通过各种方法将各种网络请求重新定个方向转到其他位置。(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。在网站调整时可以使用。常用重定向的方式有:301(永久性转移)、302(暂时性转移)。

这个过程是由浏览器端实现的。

重定向的特点

  1. 地址栏:显示新的地址
  2. 请求次数:2次
  3. 根目录:http://localhost:8080/ 没有项目的名字
  4. 请求域中的数据会丢失,因为是2次请求

与之不同的转发的方式是服务器进行处理。

转发的特点

  1. 地址栏不发生变化,显示的是上一个页面的地址
  2. 请求次数:只有1次请求
  3. 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
  4. 请求域中数据不会丢失
区别 转发forward() 重定向sendRedirect()
根目录 包含项目访问地址 没有项目访问地址
地址栏 不会发生变化 会发生变化
哪里跳转 服务器端进行的跳转 浏览器端进行的跳转
请求域中数据 不会丢失 会丢失

二、文件包含漏洞

  1. 文件包含:程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,例如 include “1.php”。php常见的文件包含函数:
1
2
3
4
include "1.php"; //当包含文件出现错误时,发出错误信息,继续执行。
include_once "1.php"; //只包含一次
require "1.php"; //当包含文件出错时,发出错误信息,不再执行。
require_once "1.php"; //只包含一次。
  1. 漏洞出现的原因

为了控制代码的灵活性,程序员把要使用的函数写到一个文件中,其他需要执行其中的函数时,只需要通过该文件包含进来,而且没有验证。

  1. 文件包含漏洞分类

1)本地的文件包含漏洞:

a)上传图片马,本地包含图片马getshell

b)本地包含读取网站源码,使用php伪协议包含读取网站源码,获得base64加密源码。

c)包含日志文件,getshell。现在日志文件中写入带有小马的日志文件,具体做法是使用burp抓取对网站的访问请求,在访问路径就面加上小马,日志文件会记录到用户的请求信息,成功写入小马,后面只需菜刀连接即可。

d)包含session文件getshell

e)获取服务器信息:../../../../../../../ect/passwd

2)远程文件包含漏洞

远程文件包含与本地类似,只不过包含的是远程文件,需要注意:

a)php.ini中的配置选项allow_url_fopen和allow_url_include 的值为on

b)包含的远程文件不能以php结尾,php结尾会直接被解析

c)包含远程文件一个技巧,可以在远程文件中写入一个创建小马的程序,当成功包含后,会在本地创建一个小马文件,使用菜刀连接,即可getshell。

1
2
3
<?php
?>');
?>
  1. 伪协议的利用

1)读取网站源码

index.php?page=php://filter/read=convert.base64-encode/resource=index.php

2)接收post文件,需要执行的内容放到post中 仅需要开启allow_url_include

index.php?php://input

3)?page=data://text/plain,<?php phpinfo();?>需要开启allow_url_open和allow_url_include

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()file()file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

评论