当前位置: 首页 > article >正文

[CTF夺旗赛] CTFshow Web13-14 详细过程保姆级教程~

前言

​ CTFShow通常是指网络安全领域中的“Capture The Flag”(夺旗赛)展示工具或平台。这是一种用于分享、学习和展示信息安全竞赛中获取的信息、漏洞利用技巧以及解题思路的在线社区或软件。参与者会在比赛中收集“flag”,通常是隐藏在网络环境中的数据或密码形式,然后通过分析、破解等手段找到并提交。CTFShow可以帮助人们了解最新的安全技术和挑战,同时也促进了安全知识和技术的交流。

Web13

1.首先,我们启动靶机,打开首页,发现这是一个文件上传页面。
在这里插入图片描述

2.根据我们的经验,我们下载一下备份文件进行一下代码审计upload.php.bak,在url中加入即可。
在这里插入图片描述

3.我们来对源码进行一下代码审计,我们发现$size > 24规定文件大小要大于24;strlen($filename)>9文件名长度要大于9;strlen($ext_suffix)>3后缀名的长度要大于3;preg_match("/php/i",$ext_suffix)后缀名要包含php;preg_match("/php/i",$filename)文件名包含php。

<?php 
	header("content-type:text/html;charset=utf-8");
	$filename = $_FILES['file']['name'];
	$temp_name = $_FILES['file']['tmp_name'];
	$size = $_FILES['file']['size'];
	$error = $_FILES['file']['error'];
	$arr = pathinfo($filename);
	$ext_suffix = $arr['extension'];
	if ($size > 24){
		die("error file zise");
	}
	if (strlen($filename)>9){
		die("error file name");
	}
	if(strlen($ext_suffix)>3){
		die("error suffix");
	}
	if(preg_match("/php/i",$ext_suffix)){
		die("error suffix");
    }
    if(preg_match("/php/i"),$filename)){
        die("error file name");
    }
	if (move_uploaded_file($temp_name, './'.$filename)){
		echo "文件上传成功!";
	}else{
		echo "文件上传失败!";
	}

 ?>

4.那么知道了这些条件我们就要来构造文件了。首先我们来写一个配置文件.user.ini
在这里插入图片描述

​ 将其上传。
在这里插入图片描述

5.接着我们来写一个1.png
在这里插入图片描述

​ 将其上传。
在这里插入图片描述

6.上传之后我们来看一下有哪些文件/index.php?1=system("ls");
在这里插入图片描述

7.我们来查看一下可能会藏有flag的文件/index.php?1=highlight_file('903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php');发现果然在里面。
在这里插入图片描述

Web14

1.首先我们启动靶机,我们发现首页是一个php代码,我们可以来进行一下代码审计,会发现提示是在url中加参数c,并且对参数进行了一些限制。
在这里插入图片描述

 <?php
include("secret.php");

if(isset($_GET['c'])){
    $c = intval($_GET['c']);
    sleep($c);
    switch ($c) {
        case 1:
            echo '$url';
            break;
        case 2:
            echo '@A@';
            break;
        case 555555:
            echo $url;
        case 44444:
            echo "@A@";
            break;
        case 3333:
            echo $url;
            break;
        case 222:
            echo '@A@';
            break;
        case 222:
            echo '@A@';
            break;
        case 3333:
            echo $url;
            break;
        case 44444:
            echo '@A@';
        case 555555:
            echo $url;
            break;
        case 3:
            echo '@A@';
        case 6000000:
            echo "$url";
        case 1:
            echo '@A@';
            break;
    }
}

highlight_file(__FILE__); 

2.这个时候我们就来测试一下,?c=3,发现爆出了一个php,访问一下看看。
在这里插入图片描述

3.我们访问一下here_1s_your_f1ag.php发现这是一个查询框并且带有弹窗回显,那么很明显说明这里是一个sql注入漏洞。
在这里插入图片描述

4.既然是sql注入漏洞,那么思路就很简单了,首先我们来测试列数,当我们输入1 order by 1时我们发现没有弹窗,这里有可能是某些字符被过滤掉了,我们将空格换为/**/,输入1/**/order/**/by/**/1发现有弹窗有回显,但是当我们输入1/**/order/**/by/**/1的时候我们发现就有弹窗但无回显了,说明列数为1。
在这里插入图片描述

5.知道了列数为1之后,我们就来去数据库中找了,首先我们先来找到数据库名。-1/**/union/**/select/**/database(),发现数据库名为web。
在这里插入图片描述

6.知道了数据库名我们就要找表名和列名了,这里就不多赘述了,但是当我们找到列名的时候我们发现flag不在这里!?query=0/**/union/**/select/**/group_concat(1,2,3)/**/from/**/(select/**/1,2,3/**/union/**/select/**/*/**/from/**/content)x同时它给了我们一个提示就是在secret中。
在这里插入图片描述

7.我们来到secret.php中,发现并看不了,我们想到是否能用load_file()来查看呢,url中输入?query=-1/**/union/**/select/**/load_file('/var/www/html/secret.php'),果然我们Ctrl+U一下发现了端倪。
在这里插入图片描述

8.所以real_flag_is_here。我们再次输入?query=-1/**/union/**/select/**/load_file('/real_flag_is_here'),然后再看一下,成功找到了flag。
在这里插入图片描述


http://www.kler.cn/news/340985.html

相关文章:

  • 是否可以将缓存的 hashCode 方法添加到原始字符串?
  • 深度学习模型
  • LabelImag标注工具环境配置
  • 【Matlab案例】imageJ + matlab 实现物体轨迹追踪及路径彩色上色
  • 【数据分析】参数检验与非参数检验
  • C语言 | Leetcode C语言题解之第468题验证IP地址
  • 【python 简易入门应用教程】第一部分:Python 基础
  • 信息安全工程师(40)防火墙技术应用
  • Word 首行缩进 2 字符怎么设置?具体步骤演示
  • html复习
  • 内容营销:基于大模型的内容再利用
  • 循环神经网络-LSTM网络
  • protobuf之Message
  • VirtualBox+Vagrant快速搭建Centos7系统【最新详细教程】
  • 库函数相关(上一篇补充)
  • WPF中的Window类
  • 【hot100-java】N 皇后
  • JavaScript 网页设计案例与技巧
  • Linux入门3——vim的简单使用
  • GEE 教程:利用Landsat函数计算不同缓冲区内的NDVI,NDWI和EVI的平均值