IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> NSCTF-web题目writeup -> 正文阅读

[PHP知识库]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到此结束~

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 12:40:18  更:2021-10-04 12:40:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:36:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码